获取失败的 systemd 服务的退出代码

获取失败的 systemd 服务的退出代码

如何获取失败的 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这意味着实际执行失败(可能找不到文件或未将文件标记为可执行文件)。

相关内容