暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

systemd入门4:列出已安装的单元文件及启用情况

编程初学者 2021-09-12
643

上一篇文章中,我们谈到了如何列出内存中现有的单元。

不过如果结合之前提到的启用和启动的区别,大体可以联想到:

既然启动和启用完全不相关的,那么一定存在单元需要手动,而不是开机就自动启动的情况。没错,确实有这类单元,它们就是已经安装在系统上,还没有运行在内存中,等待我们手动启动的单元。


那么如何才能知道电脑上安装了哪些还未曾启动的单元呢?


systemctl list-unit-files


上手man一波,养成好习惯。


man systemctl


找到 list-unit-files 部分。


基本就是列出系统上安装了的文件,结合它们的启用状态(就和is-enabled反馈的一样)。如果指定了模式,命令会做模式匹配,只有匹配上了,才会展示文件。另外,模式匹配不支持单元文件系统路径的匹配。


基本通俗易懂,除了 is-enabled 命令看起来像个新人。

问题不大,新人我们也照顾一下。


找到 is-enabled 子命令的介绍


检查指定的单元文件是否已经启用。如果至少有一个已经启用,返回退出码0,否则返回非0。同时打印当前的启用状态,见下表。加上 --quiet 可以不看输出的内容。加上 --full 显示安装目标。

名称描述退出码
"enabled"
   "enabled-runtime"
通过 .wants/, .requires/  或Aias= 表征链接启用。跨重启的文件放在 /etc/systemd/system/;一次性文件放在 /run/systemd/system/0
"linked"
   "linked-runtime"
通过一个或多个指向单元文件的表征链接实现。跨重启的文件放在  /etc/systemd/system/;一次性文件放在 /run/systemd/system/
即便是单元文件在单元文件搜索路径之外
>0
"masked"
   "masked-runtime"
完全禁用,以至于基于它的启动会fail。
跨重启的文件放在 /etc/systemd/system/;一次性文件放在 /run/systemd/system/
>0
"static"单元没有启用,而且单元文件的
[Install]段落没有指示
0
"indirect"单元文件本身没有启用,不过在单元文件
的[Install]段落中,有 Also= 设置,这里列
出的其它可能被启用了的单元文件,或者是 Also= 下没有指定,但是有个别名通过表征链接指定了。
对于模板单元文件来说,一个不同于 DefaultInstance= 所指定的实例不启用了。
0
"disabled"单元文件没有被启用,但是包含了一个
[Installl]段落,其中包含了安装指南。
>0
"generated"单元文件是通过一个构造器工具动态生
成,生成的单元文件无法启用,而是被它们的生成器隐式启用了。
0
"transient"单元文件使用运行时API动态创建。
短暂单元无法启用。
0
"bad"单元文件无效,或者发生其它错误。
注意,is-enabled 不会返回这个状态,而是打印一条错误信息。
不过 list-unit-files  打印出来的单元文件会展示这个状态。
>0


整个启用状态的列表阅读下来,大概就可以清楚单元文件总共有哪些情况。并且,单元文件为什么会处于某些状态也一目了然了。甚至于说,单元文件内部写了些什么东西,也可以猜到一二。我想,这应该就是 systemctl list-unit-files 命令最好用的一点吧。


到目前为止,systemctl 最常用的几个命令都已经介绍过了。不过这些还仅仅是 systemd 的冰山一角。systemd 还提供了全局统一日志系统 journal 。记得关注我,下期继续哦。


文章转载自编程初学者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论