Cronjob没有在Root用户上运行

时间:2017-11-13 17:55:07

标签: nginx cron lets-encrypt

我在我的VPS上为我的root用户设置了以下cronjob。如果我以root用户运行它就可以运行命令本身。

30 2 * * * service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start > /dev/null

但是它无法正常工作,因为我看到我的SSL证书没有续订。

如果我运行cat /var/log/cron,我可以看到以下内容

Nov 13 02:30:01 server CROND[2307]: (root) CMD (service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start > /dev/null)

这似乎表明它已经运行,但显然它还没有完成它应该做的事情。

我普通用户的其他cronjobs似乎工作正常,但我不能将该用户用于crons,因为我需要暂时停止Nginx这个cron。

关于如何进一步调试并对其进行排序的任何想法?

*编辑:*

我尝试将其运行到日志,并在日志/bin/sh: service: command not found

中显示以下错误

1 个答案:

答案 0 :(得分:0)

问题是service命令不在crons PATH中,所以我不得不使用/sbin/service的完整路径。

这意味着我最后的cron命令是

30 2 * * * (/sbin/service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && /sbin/service nginx start) > /dev/null 2>&1

现在正在发挥作用。

看起来作为一般规则,指定任何shell命令的完整路径是最佳做法。