使用 crontab 计划的重新启动没有继续。为什么会这样?

Gee*_*_SO 5 linux cron

信息

我在 Debian 10 上为 root 用户提供了以下 crontab。

root@debian:~# crontab -l
# crontab comments curtailed for serverfault
#
# m h  dom mon dow   command

30 3 * * * shutdown -r now
Run Code Online (Sandbox Code Playgroud)

如果我运行uptimewho -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
Run Code Online (Sandbox Code Playgroud)

我昨天晚上 7 点左右创建了 crontab,所以它肯定是在目标时间之前就位的。

问题

这可能行不通有什么原因吗?我可以以任何方式调试这个吗?

rAl*_*len 4

检查日志以查看 cron 作业是否在指定时间运行。

在 Debian 上 cron 已登录/var/log/syslog,查看是否有报告错误(如果 cron 作业已激活)。

如果你这样做的话grep cron /var/log/syslog,在 cron 应该重新启动时是否记录了任何内容?

另请检查 cron 服务是否正在运行,如果运行,则systemctl status cron.service表明该服务处于活动状态并已启用。Cron 服务需要运行才能运行 cron 作业。

也可能是 cron 无法找到关闭命令的问题,请尝试/usr/sbin/shutdown -r now在 cron 中使用。

对于 Debian 12 及更高版本

传统的日志文件在 Debian 12 中已被替换systemd-journald,因此您无法再/var/log/syslog使用工具行进行搜索grep。这也会影响其他 GNU/Linux 发行版。但您可以journalctl改为使用并直接在那里过滤日志:

journalctl -u cron
Run Code Online (Sandbox Code Playgroud)