对于systemctl状态错误(不是基础服务),systemctl状态返回什么返回码?

时间:2019-06-22 23:02:06

标签: systemd systemctl

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

根据此systemctl状态,有一个特殊的返回码列表,这些返回码返回有关您正在查询的服务的信息。

  

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

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。也许那个供应商有特定的代码?我不知道。

1 个答案:

答案 0 :(得分:0)

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