
情報
Debian 10 の root ユーザー用に次の crontab があります。
root@debian:~# crontab -l
# crontab comments curtailed for serverfault
#
# m h dom mon dow command
30 3 * * * shutdown -r now
実行するuptime
と、who -b
前回手動で再起動したとき (昨日の午後 6 時頃) の結果が表示されます。
root@debian:~# uptime
11:03:19 up 16:29, 1 user, load average: 0.00, 0.01, 0.00
root@debian:~# who -b
system boot 2020-12-26 18:34
crontab は昨日の午後 7 時頃に作成したので、目標時間より前に確実に配置されていました。
質問
これが機能しなかった理由はありますか? これを何らかの方法でデバッグできますか?
答え1
ログをチェックして、cron ジョブが指定された時間に実行されたかどうかを確認します。
Debian では cron がログインしており/var/log/syslog
、cron ジョブがアクティブ化された場合にエラーが報告されるかどうかを確認します。
もしそうなら、grep cron /var/log/syslog
cron が再起動を実行するはずだった時間に何かが記録されていますか?
また、cron サービスが実行中かどうかも確認してください。実行中の場合、systemctl status cron.service
サービスがアクティブで有効になっていると表示されます。cron ジョブを実行するには、cron サービスが実行されている必要があります。
また、cron がシャットダウン コマンドを見つけられないという問題である可能性もあります。cron/usr/sbin/shutdown -r now
で使用してみてください。
Debian 12以降の場合
従来のログファイルsystemd-journald
Debian 12では置き換えられました/var/log/syslog
、したがって、 using tools 行で検索することはできなくなりますgrep
。これは他の GNU/Linux ディストリビューションにも影響します。ただし、journalctl
代わりに を使用して、そこで直接ログをフィルタリングすることもできます。
journalctl -u cron