Linux
獲取失敗的 systemd 服務的退出程式碼
如何獲取失敗的 systemd 服務的退出程式碼?
service some_service status
列印以下內容:Active: failed (Result: exit-code)
但那是什麼
exit-code
?這些退出程式碼是標準的還是它們對不同的服務有不同的含義?
systemctl status
確實有你要找的東西:$ systemctl status openproject-web-1.service ● openproject-web-1.service Loaded: loaded (/etc/systemd/system/openproject-web-1.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Mon 2020-05-25 08:17:17 CEST; 1 day 4h ago Process: 969 ExecStart=/usr/bin/openproject run web (code=exited, status=203/EXEC) Main PID: 969 (code=exited, status=203/EXEC)
你看這裡下
Main PID:
你有(code=exited, status=203/EXEC)
。那 203 是退出程式碼。退出程式碼取決於特定的應用程序,但有約定。0為成功退出,1-255為異常退出,256+為超出範圍。posix 標準有一些特殊情況。但是您需要查看應用程序的文件以獲取更多資訊。
例如,
grep(1)
說:…如果選擇了一行,則退出狀態為 0,如果未選擇任何行,則退出狀態為 1,如果發生錯誤,則為 2
正如下面 JdePB 所描述的,systemd 可能會在 200 到 242 的範圍內自行設置一些退出程式碼。在上面的範例中,我們有退出程式碼
203
,這意味著實際執行失敗(可能找不到文件或未將文件標記為執行檔)。