我有一个shell脚本,它更新了一个LetsEncrypt SSL证书。如果我从bash提示符运行它,它可以正常工作。如果我从crontab执行,它就会被触发,但似乎没有任何命令被执行。
剧本是:
sudo systemctl stop nginx
sudo docker stop home-assistant
sudo certbot renew
sudo docker start home-assistant
sudo systemctl start nginx如果我在之后检查letsencrypt日志(/var/ log /letsencrypt/letscrypt.log),如果从cron运行"certbot更新“命令,则没有跟踪。如果我手动运行它,我会在这个日志中看到条目。
在执行cron作业时,syslog具有这样的功能:
Sep 1 19:27:01 HP-MICROSERVER cron[106193]: (myuser) RELOAD (crontabs/myuser)
Sep 1 19:27:01 HP-MICROSERVER CRON[107237]: (myuser) CMD (bash -l /usr/bin/sudo /home/myuser/renew_ssl.sh)
Sep 1 19:27:01 HP-MICROSERVER postfix/pickup[106963]: 6E68F132832: uid=1000 from=<myuser>
Sep 1 19:27:01 HP-MICROSERVER postfix/cleanup[107242]: 6E68F132832: message-id=<20220901182701.6E68F132832@HP-MICROSERVER.localdomain>
Sep 1 19:27:01 HP-MICROSERVER postfix/qmgr[102195]: 6E68F132832: from=<myuser@HP-MICROSERVER.localdomain>, size=717, nrcpt=1 (queue active)
Sep 1 19:27:01 HP-MICROSERVER postfix/local[107244]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Sep 1 19:27:01 HP-MICROSERVER postfix/local[107244]: 6E68F132832: to=<myuser@HP-MICROSERVER.localdomain>, orig_to=<myuser>, relay=local, delay=0.07, delays=0.04/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Sep 1 19:27:01 HP-MICROSERVER postfix/qmgr[102195]: 6E68F132832: removed我将其添加到/etc/sudoers中,以使脚本能够作为sudo从cron运行:
myuser ALL=(root) NOPASSWD: /home/myuser/renew_ssl.sh知道我需要做些什么才能让它从crontab中正确执行吗?
发布于 2022-09-03 18:07:43
通过使用sudo crontab -e作为根用户运行脚本(这是一个权限问题),解决了这个问题。
https://stackoverflow.com/questions/73574018
复制相似问题