Nginx
Nginx certbot cronjob 不工作
我已經安裝了帶有 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 中提出問題。