![cronjob 说“/bin/sh: 1: root: 未找到”](https://linux22.com/image/904264/cronjob%20%E8%AF%B4%E2%80%9C%2Fbin%2Fsh%3A%201%3A%20root%3A%20%E6%9C%AA%E6%89%BE%E5%88%B0%E2%80%9D.png)
我的 cronjob 命令如下,我每天都会收到这封电子邮件。我每晚都尝试重启服务器(ubuntu 18.04)。这里的问题是什么?
MAILTO="[email protected]"
30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
0 4 * * * root /sbin/reboot
答案1
通过 创建的 Cronjobscrontab -e
以发出该命令的用户身份运行,因此拥有该 cronjob。您不能在行中提供用户
0 4 * * * root /sbin/reboot
让该作业以 的身份运行root
。如果是这样的话,人们就可以以另一个用户的身份运行任意命令。没有人愿意这样。
当你想以用户身份运行 cronjob 时,root
你必须发出
sudo crontab -e
编辑root
的 crontab – 不是你的。删除用户规范,即添加以下行:
0 4 * * * /sbin/reboot
但也可以在下面的文件中定义 cronjobs /etc/cron.d
。在这种情况下,语法会有所不同,时间规范后的第一列必须包含要以该用户的身份运行该作业。但该语法仅适用于下面的文件/etc/cron.d
。