Systemd

systemd 語法變化和差異

  • September 27, 2022

收到此類錯誤後:

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指定在所有情況下都應重新啟動它。

這裡沒有監控超時,程序退出時重啟。服務可以配置看門狗,但這需要託管服務的合作(它需要定期通知看門狗)。

引用自:https://unix.stackexchange.com/questions/718868