首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试从cron执行的sudo shell脚本的问题

调试从cron执行的sudo shell脚本的问题
EN

Stack Overflow用户
提问于 2022-09-01 18:31:56
回答 1查看 48关注 0票数 0

我有一个shell脚本,它更新了一个LetsEncrypt SSL证书。如果我从bash提示符运行它,它可以正常工作。如果我从crontab执行,它就会被触发,但似乎没有任何命令被执行。

剧本是:

代码语言:javascript
复制
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具有这样的功能:

代码语言:javascript
复制
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运行:

代码语言:javascript
复制
myuser ALL=(root) NOPASSWD: /home/myuser/renew_ssl.sh

知道我需要做些什么才能让它从crontab中正确执行吗?

EN

回答 1

Stack Overflow用户

发布于 2022-09-03 18:07:43

通过使用sudo crontab -e作为根用户运行脚本(这是一个权限问题),解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73574018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档