私のUbuntu-Desktopとdebian-serverには、毎分実行する必要のあるスクリプト(私のスペースオンラインブラウザゲームの分ティックを呼び出すスクリプト)があります。
問題は、Debian派生物でcronが/var/log/syslogにログを記録していることです。 実行するたびに。 /var/log/syslogで何度も実行されたメッセージが繰り返し表示されることになります。 :
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
プログラムの出力を抑制するために、プログラムを/dev/nullにリダイレクトできることを知っています。 たとえば、プログラムからすべてのエラーメッセージと警告メッセージを非表示にするために、このようにcrontabに行を作成できます
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
ただし、cronジョブを実行して、生成されたすべての出力またはエラーがNULLにパイプされるようにしたいので、syslogでメッセージが生成されず、電子メールも生成されません。
編集:
/etc/syslog.confを変更することにより、ここで提案されているようにcronログを別のログにリダイレクトするソリューションがあります
ただし、欠点は、すべてのcronジョブのすべての出力がリダイレクトされることです。
どういうわけか、単一のcronジョブのみを別のログファイルにリダイレクトできますか?できればcron.hourly内で構成可能 ファイル自体。
承認された回答:
行を次のようにします:
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null 2>&1
これにより、STDOUT(1)とSTDERR(2)の両方がキャプチャされ、/dev/nullに送信されます。 。
MAILTO
MAILTO=""を設定してからリセットすることで、メールを無効にすることもできます これにより、メールの送信が無効になります。
例
MAILTO=""
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null 2>&1
MAILTO="[email protected]"
* * * * * root /usr/local/sbin/myothercommand.sh
追加のメッセージング
多くの場合、/var/log/syslogに次の種類のメッセージが表示されます :
Nov 11 08:17:01 manny CRON[28381]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
これらは、cronジョブのディレクトリが実行されたことをcron経由で通知するだけです。このメッセージは、これらのジョブとは直接関係ありません。代わりに、crondから送信されます。 デーモンを直接。これらについてできることは実際には何もありません。crondの進行状況を知るための唯一のウィンドウである可能性が高いため、これらを無効にしないことをお勧めします。 ログ経由。
非常に煩わしい場合は、いつでも別のログファイルに転送して、/var/log/syslogから削除できます。 /etc/syslog.confを介したファイル syslogの構成ファイル 。