问题描述
我如何列出来自systemctl
的所有enabled
服务?
我知道systmctl
列出了所有的服务,但我只想得到enabled
一次。
最佳解决方案
systemctl list-unit-files | grep enabled
将列出所有启用的。
如果你想要哪些正在运行,你需要systemctl | grep running
。
使用你正在寻找的那个。启用,并不意味着它正在运行。并且运行并不意味着它已启用。他们是两个不同的东西。
启用意味着系统将在下次启动时运行该服务。所以如果你启用了一个服务,你仍然需要手动启动它,或者重新启动它并启动。
运行意味着它现在实际上正在运行,但是如果它没有启用,它在重新启动时不会重新启动。
次佳解决方案
man systemctl
指出:
--state=
The argument should be a comma-separated list of unit LOAD, SUB, or ACTIVE states. When listing units, show only those in the specified
states. Use --state=failed to show only failed units.
说明:
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
虽然您也可以使用它仅显示enabled
单位:
systemctl list-unit-files --state=enabled
如果一个单元是enabled
,这意味着系统将在启动时启动它。虽然设置enabled
并不实际也是start
,所以您需要手动执行该操作,或者在将其设置为enabled
后重新启动系统。
第三种解决方案
-
列出
state=active
和sub=running
中的所有systemd
服务systemctl list-units --type=service --state=running
-
要列出
state=active
中的所有systemd
系列,并且运行或退出systemctl list-units --type=service --state=active
希望这能解决问题。