Systemd
systemd 語法變化和差異
收到此類錯誤後:
nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: failed (Result: core-dump) since Mon 2022-09-26 22:17:21 UTC; 8h ago Docs: man:nginx(8)
嘗試監視並在 nginx 失敗時重新啟動它。然而,不同的來源提出了不同的 syntassi:
Restart=always Restart=on-failure
計時器或單位的文件均未描述此參數。這也造成了預設計時器是什麼以及是否應該專門設置的不確定性。
該
nginx.service
文件被編輯為包含一個,然後是 directory 中的另一個/usr/lib/systemd/system
。有趣的是,目錄
/lib/systemd/system
具有相同的文件(兩者都沒有表示為別名;我假設目錄別名在起作用?)並且對一個文件的更改會反映在另一個文件上。所有更改均由
systemctl daemon-reload
更改沒有按預期重新啟動 nginx。因此:
- 這兩個 syntassi 有什麼區別
- 如果沒有指定,預設應用什麼計時器
中的所有 systemd 指令都有一個索引
man systemd.directives
;因為Restart=
,這導致man systemd.service
。
Restart=
確定託管服務退出時應該發生的情況。on-failure
指定如果它以非零退出程式碼退出、由於信號或管理操作超時,則應重新啟動它。always
指定在所有情況下都應重新啟動它。這裡沒有監控超時,程序退出時重啟。服務可以配置看門狗,但這需要託管服務的合作(它需要定期通知看門狗)。