- 命令
systemctl get-default
返回user-defined.target
。 - 然后我使用
systemctl isolate multi-user.target
切换到multi-user.target
。 - 我可以看到一堆不应该在 上运行
user-defined.taret
而应该在 上运行的服务multi-user
正在运行,这意味着我在 上运行multi-user.target
。 - 但,
systemctl get-default
总会回来user-defined.target
。
问题是,如果不查看和分类服务,我怎么知道multi-user.target
使用后正在运行isolate
?
答案1
在 systemd 中,一次可能存在多个活动目标。
检查所有当前活动目标的列表:
systemctl list-units --type target --state active
要快速找出特定目标(例如user-defined.target
)是否处于活动状态:
systemctl is-active user-defined.target
答案2
没有 systemd 命令可以查询正在运行的目标或最后使用的目标isolate
。
systemd
确实附带了一条命令,runlevel
用于兼容旧系统。这将阻止当前的“运行级别”。这个概念已经过时了,但正如所见man runlevel
,特定的运行级别映射到特定的 systemd 目标。只要使用标准目标,此命令可能很有用。如果使用了未映射到旧运行级别的自定义目标,它将毫无用处。
有关解决方法的更多讨论请参阅 [https://www.centos.org/forums/viewtopic.php?t=54347](CentOS论坛)。
答案3
与前面提到的答案类似,您可以使用:
systemctl list-units --type target | egrep "eme|res|gra|mul" | head -1
您得到的结果就是您当前的目标。
如果你安装的单元名称中包含上述四个字符串之一,则可以^
在它们前面添加字符 -egrep "^eme|^res|^gra|^mul"
在阅读下面的“Eduard Rozenberg”帖子后,我决定编辑我的答案,实际上是为了提供额外的说明。我不知道 Eduard 在发布答案之前是否尝试过我的解决方案。
但是,如果您使用上面的命令,您应该会得到正确的结果。Eduard 表示他同时获得了图形和多用户目标。我们应该只在 GUI 环境中同时获得图形和多用户目标,因为 graphic.target 需要 multi-user.target。Head
成功解决这仅显示第一行(graphical.target),因为结果是按字母顺序排序的。
@Eduard Rozenberg - 如果您读过此内容,请提供反馈,看看此命令是否适合您,谢谢...
此外,我想提供有关更短的命令/输入的信息:
- 你可以
-t
使用--type
答案4
不幸的是,这些答案都没有指出当前哪个运行级别处于活动状态。在我的例子中,它们都显示multi-user.target
和graphical.target
都已加载/处于活动状态。到目前为止,只有runlevel
命令指示当前运行级别。
runlevel | awk '{print $2}'