http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic.html#INISCRPTACT
根据此 systemctl status 有一个特殊的返回代码列表,它返回有关您正在查询的服务的信息。
如果请求状态操作,初始化脚本将返回以下退出状态代码。
Run Code Online (Sandbox Code Playgroud)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。也许那个供应商有特定的代码?我不知道。
恕我直言,退出状态在那里,以便脚本编写者(即您)可以获取状态命令的输出,而无需解析输出。
例如:
$ check [command]; echo $?
[command] is running
0
$
比较:
$ check [command1]; echo $?
[command1] is not running
0
$
了解命令是否正在运行的唯一方法是解析not的输出。将状态设置为 0 或 1 将使脚本更容易读取输出。当然,如果“check”命令不起作用,则必须返回更高的退出代码。