タスクがどのユーザーとして実行されているかに関係なく、スケジュールされたタスクを/ etc / crontabに固定して、実行予定が一目でわかるようにします。
唯一の落とし穴は、crontab -eとは異なり、保存時に形式が検証されないことです。そのため、浮遊文字がcron全体を静かに破壊する可能性があります。
保存の前後に/ etc / crontab形式を検証する方法はありますか?
タスクがどのユーザーとして実行されているかに関係なく、スケジュールされたタスクを/ etc / crontabに固定して、実行予定が一目でわかるようにします。
唯一の落とし穴は、crontab -eとは異なり、保存時に形式が検証されないことです。そのため、浮遊文字がcron全体を静かに破壊する可能性があります。
保存の前後に/ etc / crontab形式を検証する方法はありますか?
回答:
私が見つけた唯一の信頼できる方法は、ログをチェックすることです。
cron
/etc/crontab
毎分チェックし、リロードしたこと、またはエラーを検出したことを示すメッセージを記録します。
編集後、これを実行します:
sleep 60; grep crontab /var/log/syslog | tail
または、1分間待たずに、次の分+ 5秒までのみ:
sleep $(( 60 - $(date +%S) + 5 )) && grep cron /var/log/syslog | tail
エラーのある出力例:
Jan 9 19:10:57 r530a cron[107258]: Error: bad minute; while reading /etc/crontab
Jan 9 19:10:57 r530a cron[107258]: (*system*) ERROR (Syntax error, this crontab file will be ignored)
良い出力:
Jan 9 19:19:01 r530a cron[107258]: (*system*) RELOAD (/etc/crontab)
これはDebian 8にあります。他のシステムでは、cronは別のファイルに記録する場合があります。
(systemdを使用することで適切なログファイルを探し回るのを避けることができると考えましたjournalctl -u cron
が、これらのログエントリは表示されず、実際には何らかの理由でcronイベントのロギングを停止したようです)
ここでこのクールなソリューションを見つけました:https : //crontab.guru
crontabを検証するだけでなく、crontabをいつ何時に実行するかを明示的に示し、エラーの場所を強調表示します。
Ubuntuでは、私はちょうど実行できるようです:
crontab path/to/crontab/file
注:これには、このcronjobを開始する副作用があります(@NZDに感謝)
ファイルが無効な場合、次のようなエラーが表示されます。
"crontab":11: bad minute
errors in crontab file, can't install.
* 4/0 * * /bin/myscript.sh
- 4/0
は無効です。しかし、この方法でキャッチされていません
0
禁止されていますか?unix.stackexchange.com/questions/32027/...