Cron 任务未运行

Cron 任务未运行

我有这个 crontab 任务:

$ sudo crontab -l  -u root
0 22 * * * certbot renew --cert-name app.my_website123.net --pre-hook "systemctl nginx stop" --post-hook "systemctl nginx start" >> /home/my_user/cron_log1.log 2>&1

certbot 更新需要 root。

几天后,日志文件仍然不存在,这意味着任务没有执行。这是为什么?

答案1

您的crontab输入看起来不错,但可能有一个例外:certbot可能应该指定完整的路径。例如:

0 22 * * * /path/to/certbot .....

如果这不能解决问题,我们需要更多信息。我怀疑问题出在环境上,但我们需要询问cron为用户创建了什么环境root。我们可以这样提出问题:

  • 在您的主目录 ( ~/) 中创建一个 shell 脚本,如下所示(或使用您选择的编辑器):
$ nano ~/envtst.sh
  • 根据您的系统/用户进行调整后,在编辑器中输入以下内容:
#!/bin/sh 
/bin/echo "env report follows for user "$USER >> /home/you/envtst.sh.out 
/usr/bin/env >> /home/you/envtst.sh.out 
/bin/echo "env report for user "$USER" concluded" >> /home/you/envtst.sh.out
/bin/echo " " >> /home/you/envtst.sh.out
  • 保存文件,退出编辑器并将文件权限设置为可执行。
$ chmod a+rx ~/envtst.sh
  • 运行刚刚创建的脚本,并查看 中的输出/home/you/envtst.sh.out。此输出将显示您当前的环境,因为$USER您以以下身份登录:
$ ./envtst.sh $$ cat /home/you/envtst.sh.out
  • 打开你的crontab进行编辑:
$ crontab -e -u root
  • 在底部输入以下行crontab
* * * * *  /home/you/envtst.sh >> /home/you/envtst.sh.err 2>&1

输出文件/home/you/envtst.sh.out将包含“root cron 用户”的列表environment。了解后,请相应地调整您的crontab条目certbot。如果仍有问题,请在此处发布输出。

相关内容