Debian

無法打開套接字 im systemd 服務

  • May 17, 2020

我有一個用 C 語言編寫的軟體,它通過 Internet 打開到我的伺服器的 UDP 套接字。

我使用 systemd 服務方法在啟動時執行程式碼。它工作正常。但在某些情況下,我在某些網路(特別是組織或公司網路)中使用它,程式碼在作業系統啟動時執行,但無法打開套接字。當我在 root 訪問中使用命令手動停止並啟動它時systemctl,一切正常。

我在程式碼中添加了延遲,但問題仍然存在

@Stewart 認為是對的。我在我的服務文件中添加了這個:

After=syslog.target network.target sockets.target network-online.target multi-user.target

它導致服務稍後啟動並且問題得到解決。

如果您的程序在使用 systemd 啟動時無法打開 UDP 套接字,則聽起來它啟動得太早了。在啟動此服務之前,請確保網路已啟動。

您可以通過將其添加到您的服務文件來做到這一點:

[Unit]
After=network.target

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