特定のcronジョブのsyslog / rsyslogロギングをスキップする

特定のcronジョブのsyslog / rsyslogロギングをスキップする

ほとんどのGNU / Linuxディストリビューションでは、デフォルトは各cronジョブ(およびさまざまなイベント)の開始をシステムログに記録することです。これは非常に便利ですが、1分ごとに起動するなど、非常に頻繁な作業には適していません。

/etc/rsyslog.conf()を介して*.*;cron,auth,authpriv.none -/var/log/syslogすべてのクローンジョブイベントを別のログにリダイレクトする方法を知っており、(/etc/default/cron)を介してロギングをEXTRA_OPTS="-L 4"エラーイベントに厳密に制限するのは簡単です。しかし、これはすべてのクローン操作に影響を与えます。

ロギングを制限するにはどうすればよいですか?確認するcronジョブ(頻繁な1分ジョブを表す)?またはそれ自体で/etc/rsyslog.conf設定できますか/etc/crontab?システムはDebian 8.0 Jessieです。

答え1

IMHO あなたが言ったように、これが影響を与えるので、設定ファイルを介しては不可能ですみんなユーザーのクローン操作です。

ただし、次のようにstdout出力または特定のcronジョブのstdoutとstderrを強制的にリダイレクトできます。

* * * * * cron_cmdline_job1 >> /<path>/cron_job1.stdout.log
* * * * * cron_cmdline_job2 >>& /<path>/cron_job2.stdout_stderr.log

標準出力のみをリダイレクトする場合の利点は、タスクが終了するとすぐに標準エラーの内容を含む電子メールを受信できることです(必要に応じて同じ内容が欠点と見なすことができます)。

そのログに興味がない場合は、直接訪問できます。/dev/空もちろんその逆も事実だ。

答え2

cron1分ごとにタスクを実行する別の長期実行タスクがありますか?それは次のとおりです。

#!/bin/bash
flagfile="/var/run/longrunner.pid"
rm -f "$flagfile" 2>/dev/null
printf "$PID\n" >"$flagfile"
while [[ -e "$flagfile ]] ; do
    shortjob &
    sleep 60s
done

shortjob60秒の睡眠時間が歪むのを防ぐために背景に入れました。整数値に制限されないため、sleep遅延を調整できます。

kill -9 $(cat /var/run/longrunner.pid)ORを介して「毎分」ジョブの送信を停止できますrm /var/run/longrunner.pid

関連情報