Debian
無法打開套接字 im systemd 服務
我有一個用 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