我将设置crontab以自动续订let-encrypt证书。我有centos7。
以下是我对crontab的命令。
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
我知道唯一的事情是certbot renew
将在到期日之前续签证书。 0 0,12 * * *
是一个cron时间,这个cron将每天中午和午夜运行。
这个python命令有什么用?我只是不知道跟随cron的一部分。
python -c 'import random; import time; time.sleep(random.random() * 3600)'
它平均睡眠半小时,大概是为了防止世界上所有的机器人在他们想要更新的时候正好点击服务器。
time.sleep()
的参数是几秒钟,随机化选择0到3600之间的值。
如果你有Bash你可以用sleep $((RANDOM/10))
做类似的事情;但根据定义,cron
工作运行/bin/sh
,而不是Bash。 (RANDOM
返回0到32767之间的整数 - 正确的除数类似于9.1;但Bash只支持整数运算。)
random.random()
返回0到1之间的浮点数(不包括)。因此,random.random() * 3600
将返回0到3600之间的任何值(不包括),并且time.sleep
将睡眠这么多秒。
如果python
命令成功(&&
),则运行完整命令,将运行certbot renew
。