はじめての自宅サーバ構築 - Fedora/CentOS - Last Update 2008/11/05
It opened to 2004/09/19. Visitors
Pageviews
Today(IP/PV)
3,582,893
14,019,199
215/963
このページは表示専用です。新規投稿・レスや最新情報はこちらです。

crontab の記述意味
日時: 2007/07/27 20:57
名前: ことー

@不明点・障害内容:crontab ファイルの dev/null 2>&1 の意味
Aログの有無   :command > dev/null 2>&1
# crontab ファイルの設定するところで
# 意味が理解できず教えていただければとおもいました。
# crontab の例を見ていると command > dev/null 2>&1
# よく使用しているようですが、これは、コマンドが実行された後
# 標準出力された結果 → どこにも出力できない → 標準エラー出力を標準出力に
# リダイレクトするという意味でありコマンド結果が成功、エラーになっても
# 画面表示せず、ユーザにお知らせをやらないということらしいですが
# 2>&1 の部分にて標準エラー出力を標準出力にリダイレクトすると
# この後に dev/null とあれば、表示されないと言うことはわかるのですが
# 2>&1 の後になぜ標準エラー出力が標準出力にリダイレクトされた後に
# 表示されなくなるのか教えていただけますでしょうか
# 理解できていないのに設定してもなにか動いているのだろうとしか
# わからずやるのは、不安でありますので、よろしくお願いです。
Re: crontab の記述意味 ( No.1 )
日時: 2007/07/27 22:14
名前: 管理者

まずは番号の意味を以下に記します。

標準入力    →「0」
標準出力    →「1」
標準エラー出力 →「2」

「2>&1」で勘違いし易いのは「2 の出力を 1 にリダイレクトする」と思いがちですが、実際の処理は「2 の出力を 1 の出力と同じものにする」と言うことになります。
(「2>1」でない事に注意。「&」があるのでバックグランド処理となります。)

よって「command > dev/null 2>&1」の意味は、
「command」の結果は「dev/null」に出力します。しかし「標準エラー出力」は「標準出力」と同じになりますので、結果的に全ての出力が「dev/null」に渡されます。

実際の処理とは異なりますが「a>b>c」の様にリダイレクトで繋がっている場合は最終的に「c」に渡りますが、「a b>c」となっているので、最終的な出力が「a」に渡される訳です。

説明下手で申し訳ないのですが分かってもらえたでしょうか?

Copyright(©)2004-2008 First home server construction. All Right Reserved.