如何列出具有特定属性的单位?

如何列出具有特定属性的单位?

我用systemd-run --user很多东西来运行东西。我希望能够只列出那些瞬态单位,但似乎没有选择可以systemctl --user list-units做到这一点。我也无法Transient在 中列出该属性systemctl --user list-units --output json,所以这对我来说也不起作用。

如何仅列出临时职位 ( Transient=yes)?

答案1

您始终可以循环所有单元并systemctl --user show -p Transient --value在每个单元上运行。

systemctl --user list-units --full --no-legend --no-pager --all |
  while IFS=' ' read -r u rest; do
    [ "$(systemctl --user show -p Transient --no-pager --value -- "$u")" = yes ] &&
      printf '%s\n' "$u"
  done

脚本user-unit-prop-grep可以写成:

#! /bin/sh -
systemctl --user list-units --full --no-legend --no-pager --all |
  while IFS=' ' read -r u rest; do
    systemctl --user show --no-pager -- "$u" |
      grep -H --label="$u" "$@"
  done

然后列出单位Transient=yes

user-unit-prop-grep -lx Transient=yes

Transient或者在每个单元名称旁边打印属性值:

user-unit-prop-grep -Po '^Transient=\K.*'

这非常慢,因为它每个单元运行多个命令。

相关内容