Cronジョブがいつ実行されているかを確認したい。 Sudo crontab -e
ジョブのログがあると思いますが、どこにありますか?
Googleを検索して、/var/log
(名前に 'cron'が表示されていない)を検索し、/etc/syslog.conf
も持っていないファイルを編集する推奨事項を見つけました。
デフォルトのインストールでは、cronジョブがログに記録されます
/var/log/syslog
実行することにより、そのログファイル内のcronジョブのみを見ることができます
grep CRON /var/log/syslog
何も再設定していない場合、エントリはそこにあります。
Syslogに表示されるCRONエントリのみを含むcron.logファイルを作成できます。以下の指示に従うと、CRONジョブがsyslogに表示されることに注意してください。
ファイルを開く
/etc/rsyslog.d/50-default.conf
次で始まる行を見つけます。
#cron.*
その行のコメントを解除し、ファイルを保存して、rsyslogを再起動します。
Sudo service rsyslog restart
ここで、cronログファイルが表示されます。
/var/log/cron.log
これで、Cronアクティビティが(syslogに加えて)このファイルに記録されます。
Cron.logには、/ etc/cron.hourly、cron.dailyなどでcronがスクリプトを実行したときのエントリが表示されることに注意してください。何かのようなもの:
Apr 12 14:17:01 cd CRON[14368]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
ただし、/ etc/cron.dailyまたは/etc/cron.hourly内で実際に実行されたスクリプトに関する詳細情報は、それらのスクリプトがcron.log(または他のログファイル)に出力しない限り表示されません。
Crontabが実行されているかどうかを確認し、cron.logまたはsyslogで検索する必要がない場合は、選択したログファイルに出力をリダイレクトするcrontabを作成します。
01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1
これにより、実行されるスクリプトによって生成される可能性のあるすべての標準出力とエラーが、指定されたログファイルにリダイレクトされます。
その場合には、継続的に監視することが役立つ場合があります。その場合:
tail -f /var/log/syslog | grep CRON
また、読みやすくするために、個々のcronjobの出力を独自のログに送信することもできます。日付の出力をどこかに追加するだけです。
0 15 * * * /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
デフォルトでは/var/log/syslog
にあります。
ただし、より便利な別個のcron.logを作成するように設定できます。
このQ&Aではプロセスについて説明します。
16.04:cronでcron.logを作成し、リアルタイムで監視するにはどうすればよいですか?
また、この回答には、ほぼリアルタイムであることを表示するwcron
コマンドを作成するための指示があります。さらに、別の回答へのリンク、
これは、ログレベルを変更してジョブの開始以上のものを含める方法を示しています。レベル15には、エラーと終了時刻も表示されます。
これは非常に古い質問ですが、これらの答えはどれも満足のいくものではありません。
最初にcronジョブを毎分実行し、次にテストロギングでcronを非デーモンとして実行します(一時的に、既に開始されている可能性のあるcrondを強制終了します)。
crond -nx test
また、端末を介して流れるプログラム実行のログを確認します。
システムにsystemd
がインストールされている場合、journalctl
コマンドを使用して、cronジョブログを表示できます。
たとえば、私のUbuntu 17.10では:
journalctl -u cron.service
journalctl -t CROND
journalctl
マニュアルから:
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.
This parameter can be specified multiple times.
Cronの出力をtmpファイルにリダイレクトできます
例:00 11 07 * */bin/bash /home/ubuntu/command.sh>/tmp/output 2>&1
エラーと通常の出力、両方が同じファイルにリダイレクトされます
前述のように、cronジョブは/var/log/syslog
に記録されます
Syslogをgrepにパイプして、次のようにCRONログを除外できます。
less /var/log/syslog | grep CRON
このように、crontabログを検索できます
less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>
このように、gzファイルに保存されているcrontab履歴ログを検索できます
less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>
ロギングメカニズムがあると常に良いと考えられており、サーバーに ELK をすばやくセットアップできます。また、 logz を試すこともできます。