crontab
macOSでは、cronjobはコマンド出力および/またはエラーメッセージ(cronが失敗した場合)をファイルに書き込むように設定されています/var/mail/$USER
。これを防ぐことはできますか?私は試した:
* * * * * /sbin/ping -c1 website.com ... 2>&1 >/dev/null
ドメインの到達成功、失敗の有無にかかわらず、出力はping
メールファイルに保存されます。
答え1
cronデーモンは書かれていませんが、/var/mail/$USER
何かが何でも出力または失敗したときにユーザーに電子メールを送信するのではなく、システムのメール配信サービスを介してファイル(ユーザーのメール受信トレイ)に書き込まれます。
電子メールを送信するためにcronデーモンをオフにするには、MAILTO
crontabファイルでこの変数をnull値に設定します。
MAILTO=""
# rest of file with job schedules goes here
crontab(5)
macOSシステムマニュアルから:
LOGNAME
、、、HOME
に加えて、「this」crontabでコマンドを実行した結果、メールを送信する理由があるかどうかを調べます。定義されている場合(空でない場合)、メッセージは指定されたユーザーに送信されます。定義したが空の場合()メールは送信されません。 [...]SHELL
cron(8)
MAILTO
MAILTO
MAILTO
MAILTO=""
このようにジョブ出力とエラー通知の電子メール送信をオフにする場合は、別の方法でジョブを記録する必要があります。たとえば、次のようになります。
* * * * * /sbin/ping -c1 website.com ... >>/tmp/ping.log 2>&1
0 0,12 * * * mv /tmp/ping.log /tmp/ping.log.old
ping
これにより、特定のファイルへの出力が追加され、真夜中と正午にそのファイルが別の場所に移動されます(リダイレクトは/dev/null
後から進むことに注意してください)。
失敗した場合は、明示的に電子メールを送信することもできますping
。
* * * * * /sbin/ping -c1 website.com ... >>/tmp/ping.log 2>&1 || mail -s "ping failed, do something" "$LOGUSER"
ping
ゼロ以外の終了ステータスが返されるたびに、指定されたヘッダーを含む空の電子メールが送信されます。
MAILTO
または、ログファイルを使用したり電子メールを送信したりすることなく、最初から直接リダイレクトを取得できます。
* * * * * /sbin/ping -c1 website.com ... >/dev/null 2>&1
これにより、失敗するたびに電子メールが送信されますが、ping
毎分コマンド出力は送信されません。