对于 systemctl status(不是底层服务)中的错误,systemctl status 返回什么返回代码?

Jaz*_*epi 8 systemd systemctl

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
Run Code Online (Sandbox Code Playgroud)

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

我正在编写一个脚本,用于查询正在启动的服务的状态,因此我希望看到状态代码 3 几次,然后是 0。但是当“命令systemctl status是 brazoke”?

我很想说任何 5+ 的错误都是不可恢复的错误,我应该放弃等待服务的出现,但这并不是本文档具体所说的内容。它只是提供一般预订。

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

Sco*_*e H 3

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