关于linux的systemd的一些事

时间:2022-08-07 22:33:55

1. 输出运行失败的单元:

systemctl --failed

2. 所有的单元文件存放在 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 这两个目录中, 但是后者的优先级更高. systemctl list-unit-files 可以列出所有的单元.

3. 检查单元是否配置为自动启动: systemctl is-enabled <单元名>

4. 有一种单元的后缀名是 target , 开机启动进的目标是 default.target, 这个文件默认是 graphical.target 的符号链接.

5. systemd 提供了自己的日志系统, 称为 journal , 使用 journalctl 命令就可以查看日志, 经反查, 该命令是来自 systemd 这个软件包的, 通俗地讲就是 systemd 自带的.

journal 的配置文件: /etc/systemd/journald.conf , 里面可以定义日志文件的存储位置, 默认的是 /var/log/journal , 该目录是 systemd 软件包的一部分, 若被删除,systemd不会自动创建它, 直到下次升级 所以systemd 软件包的时候才会创建该目录, 若该目录缺失, systemd 会将日志写入到 /run/systemd/journal ,这意味着重启后日志会消失.

6. 显示本次启动后的所有日志 : journalctl -b

7. systemd 通过enable实现让一个服务自动启动的原理:

当我们enable一个服务的时候, systemctl会打印出一个提示, 通过这个提示我们可以知道systemd让某个服务实现开机自启的原理. 假设我们的操作对象是 sshd.service

上文说道,所有的单元都放到了 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 这两个目录中. sshd.service是放在了/usr/lib/systemd/system/ 这个目录中, 但这并不能说明sshd就可以开机自启了. 当我们enable sshd.service时, systemctl 会打印出一个提示, 告诉我们它在 /etc/systemd/system/multi-user.target.wants/里创建了一个到 /etc/systemd/system/sshd.service 的符号链接. 由此我们可以猜测, 某个单元是否自启, 要看/etc/systemd/system/multi-user.target.wants/ 中有没有这个单元(或者是到这个单元的符号链接).