我有这个 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
Run Code Online (Sandbox Code Playgroud)
certbot 更新需要 root。
几天后,日志文件仍然不存在,这意味着该任务没有被执行。这是为什么?
您的crontab条目看起来不错,但有一个可能的例外:certbot应该有完整的路径规范。例如:
0 22 * * * /path/to/certbot .....
Run Code Online (Sandbox Code Playgroud)
如果这不能解决问题,我们将需要更多信息。我怀疑问题出在环境上,但我们需要询问cron为root用户创建了什么环境。我们可以这样表述我们的问题:
~/) 中创建一个 shell 脚本,如下所示(或使用您选择的编辑器):$ nano ~/envtst.sh
Run Code Online (Sandbox Code Playgroud)
$ nano ~/envtst.sh
Run Code Online (Sandbox Code Playgroud)
#!/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
Run Code Online (Sandbox Code Playgroud)
/home/you/envtst.sh.out. 此输出将显示您当前$USER登录的环境: $ chmod a+rx ~/envtst.sh
Run Code Online (Sandbox Code Playgroud)
crontab的编辑: $ ./envtst.sh $$ cat /home/you/envtst.sh.out
Run Code Online (Sandbox Code Playgroud)
crontab:$ crontab -e -u root
Run Code Online (Sandbox Code Playgroud)
输出文件/home/you/envtst.sh.out将包含environment“root cron 用户”的列表。一旦你知道这一点,相应地调整你的crontab条目certbot。如果问题仍然存在,请在此处发布输出。
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |