自动更新证书时,centos 7 的 crontab 中的 python 代码有什么用?

What is the use of python code in crontab in centos 7 while auto renewing certificates?

我将设置 crontab 以自动续订 lets-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 returns 0 到 32767 之间的整数 - 正确的除数类似于 9.1;但 Bash 仅支持整数运算。)

random.random() returns 一个介于 0 到 1(不包括)之间的浮点数。因此,random.random() * 3600 将 return 0 到 3600(不包括)之间的任何值,并且 time.sleep 将休眠那么多 .

关于完整命令,如果 python 命令成功 (&&),certbot renew 将是 运行。