为什么不是所有的 getssl 输出都来自 cron

为什么不是所有的 getssl 输出都来自 cron

我建立了一个 LAMP 服务器来为一些网站提供服务,并且我正在使用 getssl 脚本为这些网站创建 LetsEncrypt 证书。

我已设置了一个 cron 作业来按照建议更新这些证书,但到目前为止,它实际上并没有成功为我更新它们,我发现它们每 3 个月就会过期一次,我必须手动运行它。我已经多次“修复”了我的 cron 行,并认为我已经修复了它,因为似乎一切都没有损坏,直到它坏了。我想我只是没有正确记录错误,这样我才能看到问题所在。

果然,当我手动运行时,我收到一堆未在日志中显示的内容报告。以下是手动运行:

ubuntu@ip-x-x-x-x:~$ sudo /opt/getssl -u -a && sudo /etc/init.d/apache2 reload
Check all certificates
mydomain.com: certificate is valid for more than 30 days (until Jul 15 18:43:20 2020 GMT)
myotherdomain.com: certificate is valid for more than 30 days (until Jul 15 18:43:36 2020 GMT)
mythirddomain.net: certificate is valid for more than 30 days (until Jul 15 18:43:46 2020 GMT)
[ ok ] Reloading apache2 configuration (via systemctl): apache2.service.

但在我的日志文件中,我从 cron 获得的全部信息是:

Check all certificates
Reloading apache2 configuration (via systemctl): apache2.service.

我猜测如果那些“...证书有效期为...”消息没有被记录,那么任何可能告诉我为什么没有进行实际工作(当它们无效时)的消息可能也不会被记录。

我尝试了三种 cron 行的变体,试图获取日志,但结果都一样。我猜这些都应该有效(当然,最后一种会进入 syslog - 如果可以的话,我会接受):


* * * * * /opt/getssl -u -a >> /var/log/getssl.log 2>&1 && /etc/init.d/apache2 reload >> /var/log/getssl.log 2>&1

* * * * * /opt/getssl -u -a 2>&1 | tee -a /var/log/getssl.log && /etc/init.d/apache2 reload 2>&1 | tee -a /var/log/getssl.log

* * * * * /opt/getssl -u -a 2>&1 | /usr/bin/logger -t getssl && /etc/init.d/apache2 reload 2>&1 | /uar/bin/logger -t getssl

(显然我的时间已经设定好了,所以我可以暂时调试它)

此外,当我手动运行 tee 版本的命令(包括日志记录等)时,日志中会出现这些额外的行。似乎只有在 cron 运行它时才会省略它们。

我真正的问题是关于日志记录,但当然,如果您知道为什么 getssl 也会失败,则可以指出样式问题。

我的 crontab 有错误吗?

相关内容