如何取得 system.d 服務啟動依賴項以使 network.target 表現得像 network-online.target?

如何取得 system.d 服務啟動依賴項以使 network.target 表現得像 network-online.target?

我正在運行 CentOS8 (8.1.1911) 最小安裝,以便運行 Web 伺服器。

一些服務,/etc/systemd/system/multi-user.target.wants/例如

  • httpd.service

  • mariadb.service

  • named.service

  • squid.service

  • sshd.service

  • postfix.service

有隻有After=network.target和沒有network-online.target

這是一個問題,因為在系統啟動時,這些服務會在網路準備就緒之前啟動,並且無法綁定到任何偵聽連接埠。幸運的是,一對夫婦喜歡sshd不斷重試綁定,一旦網路上線,他們就成功了。在最終成功之前,您可以看到/var/log/messages失敗的綁定嘗試。然而,並非所有服務都會重試,並且在第一次失敗後仍然處於死亡狀態。

我知道一個解決方案是使用ie run為每個服務添加自訂參數Wants/Aftersystemctl

systemctl edit httpd

並添加

[Unit]
Wants=network-online.target
After=network-online.target

這是可行的,服務現在將等待網路上線並成功綁定並在重新啟動時啟動。

現在我的問題。

我不想手動編輯要新增的每個服務,network-online.target因為這會造成維護麻煩,並且有可能在將來安裝的新服務上忘記此步驟。我想要的是一種設定策略或在系統範圍內進行更改的方法,任何帶有Wants/ Afterfor 的服務network.target都會表現得好像正在等待network-online.target

  • NetworkManager既然還要等待,這會產生問題network.target嗎?可以NetworkManager改為等待其他事情嗎?
  • network.target如果全部等待,還有其他可能中斷的服務network-online.target嗎?
  • 還有其他創意解決方案嗎?

相關內容