当前位置: 首页>>技术问答>>正文


如何列出来自systemctl的所有启用的服务?

, ,

问题描述

我如何列出来自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后重新启动系统。

第三种解决方案

  1. 列出state=activesub=running中的所有systemd服务

    systemctl list-units --type=service --state=running
    
  2. 要列出state=active中的所有systemd系列,并且运行或退出

    systemctl list-units --type=service --state=active
    

希望这能解决问题。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/708.html,未经允许,请勿转载。