Nginx

Nginx certbot cronjob 不工作

  • August 3, 2018

我已經安裝了帶有 nginx 模組的 certbot。今天我注意到自動安裝的 cron 沒有工作。有問題的 cronjob 是

/etc/cron.d/certbot

內容是

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

我調試了腳本

test -x /usr/bin/certbot
echo $?
0

test -x /usr/bin/certbot -a \! -d /run/systemd/system
echo $?
1

並查看手冊頁進行測試。\!似乎不是 -a 標誌的有效參數。

我能夠使用

0 */12 * * * root test -x /usr/bin/certbot -a -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

我的問題是: ! 做嗎?它一直都在嗎?

我正在使用

certbot 0.26.1
nginx version: nginx/1.14.0
Ubuntu 16.04.5

來自man test

EXPRESSION1 -a EXPRESSION2

EXPRESSION1 和 EXPRESSION2 都為真

-a是一個合乎邏輯的and

!否定以下表達式,-d /run/systemd/system

因此,這轉化為:

IF/usr/bin/certbot存在並且是可執行的 AND NOT/run/systemd/system存在並且是一個目錄。

\只是一個轉義,所以 crond 不會!直接解釋。


至於它為什麼在那裡……你將不得不詢問包維護者。如果這是可重現的,如果安裝在您的系統中產生不工作的結果,則可能值得在他們的 bugtracker 中提出問題。

引用自:https://serverfault.com/questions/924806