如何获取失败的 systemd 服务的退出代码?
service some_service status
打印以下内容:
Active: failed (Result: exit-code)
但那是什么exit-code
?
这些退出代码是标准的还是对于不同的服务有不同的含义?
答案1
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
这意味着实际执行失败(可能找不到文件或未将文件标记为可执行文件)。