Par*_*avi 6 linux systemd exit-status
如何获取失败的 systemd 服务的退出代码?
service some_service status打印以下内容:
Active: failed (Result: exit-code)
Run Code Online (Sandbox Code Playgroud)
但那是什么exit-code?
这些退出代码是标准的还是对于不同的服务有不同的含义?
systemctl status确实有您正在寻找的东西:
$ systemctl status openproject-web-1.service\n\xe2\x97\x8f openproject-web-1.service\n Loaded: loaded (/etc/systemd/system/openproject-web-1.service; enabled; vendor preset: enabled)\n Active: failed (Result: exit-code) since Mon 2020-05-25 08:17:17 CEST; 1 day 4h ago\n Process: 969 ExecStart=/usr/bin/openproject run web (code=exited, status=203/EXEC)\n Main PID: 969 (code=exited, status=203/EXEC)\nRun Code Online (Sandbox Code Playgroud)\n\n你看下面Main PID:你有(code=exited, status=203/EXEC)。203 是退出代码。
退出代码取决于特定的应用程序,但有一些约定。0为成功退出,1-255为异常退出,256+为超出范围。posix标准有一些特殊情况。但您需要查看应用程序的文档以了解更多信息。
\n\n例如grep(1)说:
\n\n\n...如果选择了一行,则退出状态为 0;如果未选择任何行,则退出状态为 1;如果发生错误,则退出状态为 2
\n
正如下面 JdePB 所描述的,systemd 可能会在 200 到 242 的范围内设置一些退出代码。在上面的示例中,我们有退出代码,203这意味着实际执行失败(可能文件未找到或未标记为可执行文件)。