に関する記事を読んでいます。予約されたこと
自動メールを無効にする方法があります。
電子メールの無効化 デフォルトでは、cron ジョブは cronjob を実行しているユーザーアカウントに電子メールを送信します。必要でない場合は、cron タスクラインの末尾に次のコマンドを入力します。
>/dev/null 2>&1
2
>
&
との詳細な意味は何ですか1
?これをcrontabファイルの末尾に置くと、電子メールの送信がオフになるのはなぜですか?
答え1
>
リダイレクトのため
/dev/null
ブラックホールであり、送信されたすべてのデータは破棄されます。
2
標準エラーのファイル記述子です。
>
リダイレクトのため
&
ファイル記述子のシンボルです(このシンボルがない場合、次は1
ファイル名として扱われます)。
1
標準出力のファイル記述子です。
したがって、>/dev/null 2>&1
プログラムの出力を/dev/null
.includesStandard Error
とStandard Out
。
詳細については、Linuxドキュメントプロジェクトを参照してください。入力/出力リダイレクトページ。
cron
あなたの仕事からいくつかの結果が出たときにのみ電子メールが届きます。すべてがにリダイレクトされるため、null
出力がないため、cron
電子メールは送信されません。
答え2
/dev/null
ブラックホールとして機能するデバイスファイルです。書かれたものは何でも捨てられたり消えたりする。出力を提供するスクリプトを実行するときに> /dev/null 2>&1
スクリプトの末尾にを追加すると、スクリプトが生成するすべてのもの(出力およびエラーメッセージ)に書き込むようにスクリプトに要求します/dev/null
。
それを破壊する:
2
標準エラーに対するハンドルまたはSTDERR
1
標準出力へのハンドルまたはSTDOUT
2>&1
すべてのSTDERR
指示に従ってSTDOUT
(つまり、スクリプトによって生成されたすべてのエラーメッセージを標準出力として扱う必要がある)必要があります。これは> /dev/null
スクリプトの終わりにあるので、これはすべてのstdout(STDOUT
)がに書き込まれることを意味します/dev/null
。なぜなら、今、両方とも結局ブラックホールに陥ることにSTDERR
なるからです。つまり、スクリプトが沈黙します。STDOUT
2>&1
STDERR
STDOUT
/dev/null
ところで、>
前に一つがなければなり/dev/null 2>&1
ません。
x * * * * /path/to/my/script > /dev/null 2>&1
答え3
これは標準I / Oリダイレクトです。
3 つの基本ファイルが常に開きます。
- 標準入力(0)
- 標準出力(1)
- 標準エラー(2)
したがって、この例では stdout( 1
) にリダイレクトされます/dev/null
。
デバイスnull
は、記録されたすべてのデータを削除するデバイスファイルです。
その後、stderrはstdout(2>&1
)にリダイレクトされるため、stdoutとstderrの両方が次に移動します。/dev/null
だからこれをcrontabジョブの最後に配置すると、コマンドのすべての出力とエラーが抑制されます。
引用する
答え4
通常、cron
cronjobが実行されると、cronjobに提供されたコマンドの出力がcronjobを実行したユーザーアカウントに送信されます。たとえば、cronjobが実行されると、uptime
出力はuptime
ユーザーに電子メールで送信されます。
明確にする必要があるのは、stdout
このコマンドの標準出力()の意味です。uptime
cornjobで次のコマンドを実行すると:
uptime >/dev/null 2>&1
2>&1
チャンネル2(stderr
)をチャンネル1(stdout
)にリダイレクトします。これで、両方の出力が同じチャネル(1
)にあります。>/dev/null
:標準出力(および標準エラー出力)がに送信されることを示します/dev/null
。/dev/null
特殊ファイルです。
空のファイルや特殊ファイルのないファイルに書き込まれたデータは削除されます。
したがって、出力を削除してcronに送信することはありません。