Root crontab 未运行

Root crontab 未运行

由于某种原因,我的 root crontab 似乎没有运行。

尝试每天晚上午夜重启设备。

以 root 身份执行下列操作:

crontab -e

然后加:

0 0 * * * /sbin/shutdown -r now

当我使用一些接近当前时间的值进行测试时,什么也没有发生。我安装了 NTP 并确保时区正确。我还指定使用 24 小时制。例如,要立即测试此行(下午 5:35),我尝试输入以下内容:

36 17 * * * /sbin/shutdown -r now

我已经使用 date -R 检查了时间。crontab 运行的时间到了又过去,系统没有重新启动。我这里遗漏了什么?

答案1

我给你三条解决建议。

  1. 使用以下命令调用 crontab:crontab -e -u root

  2. 确保 cronjob 文件末尾有一个空行,这意味着每一行都以换行符结尾。

  3. 您可能需要将输出重定向至 devnull:shutdown -r now > /dev/null

以下是两个有关 cronjobs 的有用网页:

CronDrive 测试器

Cron 表达式生成器

你也可以使用以下方法巧妙地处理 cronjobs网页管理工具

除此之外,您至少还有两种方法可以在午夜重新启动计算机。

一种是在登录时自动将关机命令作为脚本运行,但以具体时间作为参数而不是“现在”:

shutdown -r 00:00

但是,每次登录时都会广播即将关机的消息(这可能不是坏事)。您也可以通过在 init.d 中添加脚本来让它在启动时运行,但仍然会产生消息。

另一种是使用at命令:

at 0am

输入命令shutdown -r now并使用 ctrl+d 保存或为该命令执行脚本并执行:

at -f restart_script.sh 0am

答案2

系统 Cron 任务列在 /etc/crontab 文件中。因此,直接编辑此文件将帮助您以 root 身份运行重启命令。

所以,

$ sudo vi /etc/crontab

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  23 20 *  *  *  root  shutdown  -r  now

确保在编辑 crontab 后检查 Cron 日志文件,因为它会让您知道 cron 是否安装成功。

我已经测试过了,它对我有用。晚上 8:23 重启了我的系统

祝你好运!

相关内容