最精准轻量的方式是用 systemctl show -p 指定属性名;隐藏属性如 Triggers、BindsTo、StopWhenUnneeded 等不在默认 status 中显示,需显式查询;可用 --format=json 配合 jq 解析,查询前应确认属性适用 unit 类型。

直接用 systemctl show 加 -p 或 --property= 指定属性名,是最精准、最轻量的方式;不加过滤会输出全部 200+ 项,包含大量无用隐藏字段。
只查单个关键隐藏属性(如触发器、绑定关系)
很多底层元数据并不在默认 systemctl status 中显示,比如 Triggers(被哪些 unit 触发)、BindsTo(强依赖绑定)、StopWhenUnneeded(是否自动停止)等。这些需显式指定:
systemctl show sshd.service -p Triggerssystemctl show nginx.service -p BindsTo -p StopWhenUnneeded-
systemctl show docker.socket -p TriggeredBy(注意大小写敏感,TriggeredBy≠Triggers)
批量导出所有隐藏/非默认属性(排除通用显示项)
默认 show 输出含大量高频字段(如 Id、LoadState、ActiveState),真正“隐藏”的是那些 rarely-used 的底层控制参数。可用以下命令筛出非常规项:
- 先获取完整属性列表:
systemctl show --property= --no-pager sshd.service | sed 's/=.*//; /^$/d' | sort | uniq - 再排除常见字段(如
Id、Name、LoadState、ActiveState、SubState、Description),剩下即为低层元数据候选 - 常用隐藏属性包括:
WantedBy、RequiredBy、Conflicts、StopWhenUnneeded、RestartSec、StartLimitIntervalSec、ControlGroup、Delegate、MemoryAccounting
用 JSON 格式解析结构化元数据(适合脚本处理)
加 --all --value 会丢失键名,而 --all --format=json 可保留完整键值对,方便 grep 或 jq 提取深层字段:
systemctl show --all --format=json sshd.service | jq '.[].TriggeredBy'systemctl show --all --format=json docker.service | jq 'select(.Delegate == "yes")'- 注意:
--all包含运行时动态属性(如MainPID、MemoryCurrent),若只需静态单元定义,去掉--all
确认属性是否存在再查询(避免空输出误导)
某些属性仅在特定类型 unit 中有效(如 ListenPort 只存在于 socket unit),直接查会静默返回空。安全做法是先列出所有支持属性:
-
systemctl show --property= sshd.service | head -20(查看前 20 个键名) - 或查 man 手册:
man 5 systemd.service或man 5 systemd.unit,对应 unit 类型的合法属性都在那里定义 - 例如
UtmpMode仅对getty@.service有效,对sshd.service查询将无输出

















