![使用 crontab 安排的重启没有继续。这可能是什么原因?](https://linux22.com/image/761497/%E4%BD%BF%E7%94%A8%20crontab%20%E5%AE%89%E6%8E%92%E7%9A%84%E9%87%8D%E5%90%AF%E6%B2%A1%E6%9C%89%E7%BB%A7%E7%BB%AD%E3%80%82%E8%BF%99%E5%8F%AF%E8%83%BD%E6%98%AF%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0%EF%BC%9F.png)
信息
我在 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
我昨天晚上 7 点左右创建了 crontab,所以它肯定在目标时间之前到位。
问题
有没有原因导致这个方法不起作用?我可以用任何方法调试它吗?
答案1
检查日志以查看 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 及更高版本
传统日志文件systemd-journald
在 Debian 12 中已被取代,因此您无法再/var/log/syslog
使用工具行进行搜索grep
。这也会影响其他 GNU/Linux 发行版。但您可以改用journalctl
并直接在那里过滤日志:
journalctl -u cron