我需要续订我的Let的加密证书,我喜欢这样:
$ sudo docker stop nginx
$ sudo docker run -it --rm -p 443:443 --name certbot -v /etc/letsencrypt:/etc/letsencrypt -v /var/log/letsencrypt:/var/log/letsencrypt quay.io/letsencrypt/letsencrypt:latest renew
$ sudo docker start nginx
我已经定期运行这些命令,所以我想创建一个cronjob。到目前为止,我创建了这个文件:
$ sudo nano /opt/letsencrypt.sh
有了这个内容:
#!/bin/sh
sudo docker stop nginx
sudo docker run -it --rm -p 443:443 --name certbot -v /etc/letsencrypt:/etc/letsencrypt -v /var/log/letsencrypt:/var/log/letsencrypt quay.io/letsencrypt/letsencrypt:latest renew
sudo docker start nginx
要将此文件添加到我所做的cronjobs中:
$ sudo nano /etc/crontab
5 8 * * 6 root /opt/letsencrypt.sh
但一切都没有发生。没有错误,没有行动。我做错了什么?
如果可以记录这份工作会很棒,所以我可以看到它何时运行......
答案 0 :(得分:0)
您是否已将脚本设置为可执行文件?
如果没有,请尝试chmod +x /opt/letsencrypt.sh
答案 1 :(得分:0)
确保在reader = open("ping.log", 'r') # not 'w' if you are reading
try:
# Do things with reader here
# Basically copy-paste the stuff which was inside the with statement
finally:
reader.close()
内运行-it
时不使用docker run
:
错误:
crontab
正确:
0 3 * * * docker run -it --rm --name certbot ...
您还可以将输出记录到日志文件中:
0 3 * * * docker run --rm --name certbot ...
这会将标准输出0 3 * * * docker run --rm --name certbot ... > /tmp/cronjob.log 2>&1
和错误[1]>
都记录到该文件。