为啥“重启”操作不适用于 crontab?

Posted

技术标签:

【中文标题】为啥“重启”操作不适用于 crontab?【英文标题】:Why 'reboot' operation does not work with crontab?为什么“重启”操作不适用于 crontab? 【发布时间】:2022-01-18 07:53:11 【问题描述】:

我使用的是 ubuntu 18.04。

我想每天重启我的服务器。

这是我的 root crontab 文件,我可以通过 'sudo crontab -e' 操作看到它

0 0 * * * rm /var/log/*log.*
0 0 * * * rm /var/log/rinetd.log
1 0 * * * reboot now

我确认其余命令运行良好,但只有“重启”命令不起作用,我不知道原因。 我检查了 'reboot now' 操作在 bash shell 中运行良好。

obiwan@myserver ~ sudo reboot now
Connection to 10.10.10.122 closed by remote host.
Connection to 10.10.10.122 closed.

当我搜索它时,我只发现关于 crontab 中的“@reboot”选项的问题不起作用,所以我正在写这个问题。

一直以来,非常感谢。

【问题讨论】:

这可能应该转到Unix & Linux。无论如何,请检查您的系统日志;如果命令发出任何类型的错误或其他输出,您将在那里看到它。 据我所知,来自 cron 守护程序的错误消息不会出现在系统日志中。而且我只是检查了系统日志,并没有找到那个时间(晚上十二点)的任何日志。 【参考方案1】:

所以我最近也开始遇到这个问题。

我一直在做一些挖掘,到目前为止我发现如下:

在 SU crontab 中放置“rebo​​ot”不会执行任何操作,但放置“/sbin/reboot”会成功重新启动系统 这对于用户 crontab 是不正确的,无论是“rebo​​ot”还是“/sbin/reboot”功能。

所以这是一个临时修复,可以让您的系统暂时正常工作,但我会继续挖掘。

编辑: 这里还有更多事情要做,它似乎不仅仅是一个与 su 相关的问题。我将密码明文传递给“sudo systemctl reboot”,但它没有触发。

【讨论】:

我错过了回复警报。对不起。我也通过放置“/sbin/reboot”解决了这个问题,但我也想知道原因。感谢您的友好和详细的回答。如果您发现任何其他内容,请告诉我,我将不胜感激。

以上是关于为啥“重启”操作不适用于 crontab?的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统计划任务之系统定时重启任务

Linux中crontab日志配置

linux 下cron定时任务为啥没执行

Crontab表达式执行定时任务

linux crontab

Linux系统计划任务之系统定时重启任务