私の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
の構成ファイル 。