![如何列出具有特定属性的单位?](https://linux22.com/image/223070/%E5%A6%82%E4%BD%95%E5%88%97%E5%87%BA%E5%85%B7%E6%9C%89%E7%89%B9%E5%AE%9A%E5%B1%9E%E6%80%A7%E7%9A%84%E5%8D%95%E4%BD%8D%EF%BC%9F.png)
我用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.*'
这非常慢,因为它每个单元运行多个命令。