我用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.*'
这非常慢,因为它每个单元运行多个命令。