为什么sudo crontab不起作用但是crontab可以起作用?

为什么sudo crontab不起作用但是crontab可以起作用?

我想执行一个包含 sudo 命令的 ruby​​ 脚本。如果我在“ crontab -e ”中输入此命令,它可以正常工作:

* * * * * /usr/bin/ruby ~/myfolder/test.rb >> ~/myfolder/mylog.log 2>&1

由于我的脚本包含 sudo 命令,因此我使用“sudo crontab -e”并写道:

* * * * * /usr/bin/ruby home/USERNAME/myfolder/test.rb >> home/USERNAME/myfolder/mylog.log 2>&1

但是,它不起作用。第二种情况下没有创建日志文件。我以前也有一个不同的地址。

答案1

如果我在“ crontab -e ”中输入此命令,它可以正常工作:

该命令以用户身份执行,因此可以了解您的 HOME。

由于我的脚本包含 sudo 命令,因此我使用“sudo crontab -e”并写道:

问题:如果您的行home/USERNAME/应该是/home/USERNAME/(两倍!)其中 USERNAME 需要是您的实际用户。您需要在 crontab 中使用绝对 PATH。

确实如此:错误很可能记录到 /var/log/syslog 中

哦,请不要使用 * * * * *,除非您的脚本中有一些逻辑,以使它不会执行比您真正想要的更多的次数。如果您需要永远运行它,请使用带有重生选项的 systemd 服务。

相关内容