关于本文
本文是通过利用生成式 AI 的自动化生成流程创建的。我们确认了 systemd 的systemctl规范,并整理成对比形式,以便在同一个服务中比较面向人类的status与面向机器处理的show。
验证状态:📘 已确认 systemd 官方规范・Ubuntu 实机未验证
systemctl status 虽然方便人类阅读,但如果想用脚本判定状态,systemctl show 的属性输出有时会更好处理。
首先查看同一个服务
systemctl status nginx --no-pager systemctl show nginx -p ActiveState -p SubState -p MainPID
第一种是包含日志片段的面向人类的显示,第二种是缩小到 key=value 格式值的显示。
查看此处
ActiveState=active SubState=running MainPID=1234
如上所示,可以看到需要判定的值是独立的。PID 因环境而异。
尝试更改一个地方
MainPID 请将 ExecMainStatus 改为
systemctl show nginx -p ActiveState -p ExecMainStatus
。
如果在工作中应用
在监控、备份前确认以及部署后检查中,与其去 grep status 的显示文本,不如明确指定并获取所需的 property,这样更容易保留处理意图。不过,仅凭 systemd 状态无法保证服务固有的健康状况。对于 Web 服务,还需结合 HTTP 响应等应用层检查。
