enabled
的所有systemctl
服务?我知道运行
systemctl
命令本身会列出所有服务,但我只想获取enabled
的服务。#1 楼
systemctl list-unit-files | grep enabled
将列出所有已启用的。如果要当前运行的是哪个,则需要
systemctl | grep running
。使用所需的那个。已启用,并不意味着它正在运行。运行并不意味着它已启用。它们是两件事。
启用表示系统将在下次启动时运行服务。因此,如果启用了服务,则仍然需要手动启动或重新启动它,然后它才能启动。
运行意味着该服务现在正在实际运行,但是如果未启用,它将在以下时间重新启动您重新启动。
评论
不得不使用外部工具(grep)来显示此重要信息很烦人。但是谢谢你给我们展示了方式:)
–Felipe Alvarez
17 Feb 15'2:43
@FelipeAlvarez正确。但这就是Linux的工作方式。许多小型二进制文件相互配合。 systemctl执行要求的操作,列出服务。由于grep已经存在并且可以对任何程序的输出进行良好处理,因此systemctl中没有内置的过滤命令。一直都是这样:)
–多里安(Dorian)
17-2-16在16:01
我同意,应该这样。但是,systemd已经尝试做太多事情了,我想知道为什么它不能列出已启用的服务?
–Felipe Alvarez
17年2月18日在0:45
systemctl | grep running不向我列出任何内容!即使某项正在运行,也仅按照其状态列出:启用,禁用,屏蔽,静态
–Cirelli94
17年4月13日在10:34
更简单:systemctl list-unit-files --state =运行
–将
17年9月2日在10:40
#2 楼
man systemctl
状态:--state=
参数应为以逗号分隔的单位
LOAD
,SUB
或ACTIVE
状态的列表。列出单位时,仅显示处于指定状态的单位。使用--state=failed
仅显示出现故障的单元。说明:
LOAD
:反映是否正确加载了单元定义。 ACTIVE
:高级单位激活状态,即SUB
的推广。 SUB
:低级单元激活状态,值取决于单元类型。虽然您也可以使用它仅显示带有以下内容的enabled
单元:systemctl list-unit-files --state=enabled
如果单元是
enabled
,则表示系统将在启动时启动它。虽然将某项设置为enabled
实际上也不会同时将其设置为start
,所以您将需要手动执行此操作,或者将其设置为enabled
后重新启动系统。评论
要同时启用和启动:systemctl enable --now ...
–AurélienOoms
17年7月29日在20:24
--state = enabled对systemd版本215(在Raspbian 8 Jessie上)不起作用,但是在systemd版本229(在Ubuntu 16.04.03 Xenial上)上有效。
–mpb
17年12月17日在22:15
@mpb:但是,它在Arch Linux的235版本上工作得很好。
–user364819
17年12月17日在23:07
#3 楼
列出systemd
和state=active
中的所有sub=running
服务systemctl list-units --type=service --state=running
列出
systemd
中所有在运行或退出的state=active
服务systemctl list-units --type=service --state=active
#4 楼
要查看包括已在upstart / init中运行的“已启用”服务:systemctl list-unit-files --type service --state enabled,generated
要查看所有当前正在运行的服务,请运行:
systemctl list-units --type service --state running
评论
不幸的是,两个列表中的服务名称可能不同-例如sshd与ssh以及syslog与rsyslog。
–橙色狗
19年1月11日在18:35
唯一的“ non grep”正确答案。虽然不确定为什么会提到暴发户...
–rogerdpack
19年7月5日在16:53
#5 楼
还概述了所有活动和失败的服务:systemctl list-units --type service --state running,failed
#6 楼
有一个名为Stacer的优秀GUI应用程序,您可以在其中管理所有服务。检查其Github链接Stacer Github
还请检查Web以获得更多信息
#7 楼
除了当前答案之外,我还使用以下方法仅获取服务的名称:systemctl list-units --type=service --state=active,running | awk '/.*\.service/ {print }'
除了表格格式之外,这使得将这些服务通过管道传输到另一个程序变得更容易
评论
您启用是什么意思?您的意思是正在运行的服务?@Gen启用服务与启动服务大不相同。请参见man systemctl。
迷人。评分最低的答案是最“正确”的答案,即使它显然不是最佳答案。这个极好的问题(及其答案)是一个有趣的例子,说明systemd如何违反Unix&Co长期存在的(精妙的)设计原则。 / systemctl可以完全满足他的要求(大多数有经验的用户只会考虑做到这一点)。我开始更清楚地看到为什么Linus Torvalds如此强烈地批评systemd。