【问题标题】:What return code does systemctl status return for an error in systemctl status (not the underlying service)?systemctl status (不是底层服务) 中的错误 systemctl status 返回什么返回码?
【发布时间】:2019-11-05 06:28:06
【问题描述】:

http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic.html#INISCRPTACT

根据这个 systemctl status 有一个特殊的返回代码列表,它返回有关您正在查询的服务的信息。

如果请求状态操作,初始化脚本将返回以下退出状态代码。

0 program is running or service is OK
1 program is dead and /var/run pid file exists
2 program is dead and /var/lock lock file exists
3 program is not running
4 program or service status is unknown
5-99  reserved for future LSB use
100-149   reserved for distribution use
150-199   reserved for application use
200-254   reserved

没关系,但我对 1 并不意味着 systemctl status 本身失败(不是底层服务)这一事实感到目瞪口呆。

我正在编写一个脚本来查询正在启动的服务的状态,所以我希望看到状态代码 3 几次,然后是 0。但是我应该是什么状态代码期待“systemctl status 命令是 brazoke”?

我很想说 5+ 是一个不可恢复的错误,我应该等待服务启动,但这并不是本文档所说的具体内容。它只是提供一般的保留。

如果有任何帮助,我正在使用 Ubuntu 16.04 和 18.04。也许那个供应商有特定的代码?我不知道。

【问题讨论】:

    标签: systemd systemctl


    【解决方案1】:

    恕我直言,退出状态在那里,以便脚本编写者(即您)可以获取状态命令的输出,而无需解析输出。
    例如:
    $ check [command]; echo $? [command] is running 0 $
    比较:
    $ check [command1]; echo $? [command1] is not running 0 $
    知道命令是否正在运行的唯一方法是解析 not 的输出。将状态设置为 0 或 1 将使脚本更容易读取输出。当然,如果“检查”命令不起作用,它必须返回更高的退出代码。

    【讨论】:

      最近更新 更多