Systemd
systemctl 的可解析輸出(例如列出所有單元)
我對 systemctl 的輸出不滿意
我有一個解析輸出的腳本
systemctl list-units -t service --full --all
輸出的開頭如下所示:
UNIT LOAD ACTIVE SUB JOB DESCRIPTION after-local.service loaded inactive dead /etc/init.d/after.local Compatibility ● amavis.service not-found inactive dead amavis.service apparmor.service loaded active exited Load AppArmor profiles auditd.service loaded active running Security Auditing Service
在不同的 systemd 上,帶有點的列(在 amavis.service 之前)不存在。
systemctl 是否有機器/腳本可讀的輸出?
我將它用於機器可解析的輸出,
--plain --no-legend
例如添加:systemctl list-units -t service --full --all --plain --no-legend
您可以通過設置標誌來獲得 json (或
json-pretty
)輸出:--output
systemctl list-units \ --type service \ --full \ --all \ --output json \ --no-pager
如果您的 systemctl 版本不支持 json 輸出,您可以像這樣獲得 json:
systemctl list-units \ --type service \ --full \ --all \ --plain \ --no-legend \ --no-pager \ | sed 's/ \{1,\}/,/g' \ | jq \ --raw-input \ --slurp \ 'split("\n") | map(split(",")) | .[0:-1] | map( { "unit": .[0], "load": .[1], "active": .[2], "sub": .[3] } )'