crontab によるスケジュールされた再起動が実行されませんでした。これはなぜでしょうか?

crontab によるスケジュールされた再起動が実行されませんでした。これはなぜでしょうか?

情報

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/syslogcron が再起動を実行するはずだった時間に何かが記録されていますか?

また、cron サービスが実行中かどうかも確認してください。実行中の場合、systemctl status cron.serviceサービスがアクティブで有効になっていると表示されます。cron ジョブを実行するには、cron サービスが実行されている必要があります。

また、cron がシャットダウン コマンドを見つけられないという問題である可能性もあります。cron/usr/sbin/shutdown -r nowで使用してみてください。

Debian 12以降の場合

従来のログファイルsystemd-journaldDebian 12では置き換えられました/var/log/syslog、したがって、 using tools 行で検索することはできなくなりますgrep。これは他の GNU/Linux ディストリビューションにも影響します。ただし、journalctl代わりに を使用して、そこで直接ログをフィルタリングすることもできます。

journalctl -u cron

関連情報