Systemd

以機器可讀格式列出 Systemd 目標單元的依賴項

  • September 14, 2020

我有一個複雜的 systemd 目標單元,其中包含許多依賴單元。我想列出並解析這些狀態,而不會退回到循環中。

’list-dependencies’ 子命令僅以(彩色,未以純 unicode 複製)點的形式給出狀態,這不是很好解析。

> systemctl list-dependencies --no-page myunit.target
dcache.target
● ├─mytemplate@unit_foo.service
● ├─mytemplate@unit_bar.service
● ├─mytemplate@unit_baz.service
...

–no-page 標誌似乎沒有任何影響,並且無論有無輸出都保持不變。

或者,

systemctl list-dependencies --plain myunit.target

僅列出依賴項但不列出其目前狀態

有沒有辦法從’systemctl list-dependencies’生成輸出,可以解析或者是JSON或類似的?

Systemd 不支持任何開箱即用的 json api。檢查下面的討論:https ://github.com/systemd/systemd/issues/83 。在這裡獲得機器可讀輸出的唯一方法是 –plain 版本,您提到了它並且工作得很好。您可以使用 systemctl 獲得的狀態資訊是活動的。所以你需要做一些腳本來得到你想要的。對於您的具體問題,您可以使用:

systemctl list-dependencies --plain nginx | xargs -I {} sh -c 'echo -n {}": "; systemctl is-active {};'

引用自:https://serverfault.com/questions/1033793