Systemd笔记

Systemd管理的启动脚本位于 /usr/lib/systemd/system/ 下

Systemd启动顺序约定为: 当前服务满足启动条件, 则立即创建进程进行并行启动, 启动条件指服务的依赖关系(Requires, Wants)和顺序关键字(After, Before)等

# 查看启动的服务, 再加上 --all 参数可以列出未启动的服务
systemctl list-units
# 列出服务配置文件, 如果只看服务, 可以加上 --type=service
# 状态有4种: enabled:已建立启动链接, disabled:没建立启动链接, static:没有[Install]部分,只作为其他配置的依赖, masked:被禁止建立启动链接
systemctl list-unit-files
# 查看当前系统的所有 Target
$ systemctl list-unit-files --type=target
# 查看启动时的默认 Target
systemctl get-default
# 设置启动时的默认 Target
systemctl set-default multi-user.target
# 切换Target时默认不关闭前一个Target启动的进程, 而用isolate命令时会关闭前一个Target里所有不属于后一个Target的进程
systemctl isolate multi-user.target
# 查看服务启动的依赖关系, 要列出target里面的详细服务, 需要加上 --all 参数
systemctl list-dependencies some.service

Target 与 传统 RunLevel 的对应关系如下

Traditional runlevel New target name Symbolically linked to...
Runlevel 0 | runlevel0.target -> poweroff.target
Runlevel 1 | runlevel1.target -> rescue.target
Runlevel 2 | runlevel2.target -> multi-user.target
Runlevel 3 | runlevel3.target -> multi-user.target
Runlevel 4 | runlevel4.target -> multi-user.target
Runlevel 5 | runlevel5.target -> graphical.target
Runlevel 6 | runlevel6.target -> reboot.target

.Systemd对单个服务的管理

# 显示某个 Unit 是否正在运行
systemctl is-active application.service
# 显示某个 Unit 是否启动失败
systemctl is-failed application.service
# 显示某个 Unit 服务是否开启了自动启动
systemctl is-enabled application.service
# 激活开机启动
systemctl enable application.service
# 撤销开机启动
systemctl disable application.service

启动分析

# 查看启动耗时
systemd-analyze
# 查看启动各项服务使用的时间
systemd-analyze blame
# 显示瀑布状的启动时序
systemd-analyze critical-chain
# 显示指定服务的启动时序
systemd-analyze critical-chain sshd.service
# 生成服务启动时序svg图
systemd-analyze plot > boot.svg

查看启动日志

# 查看启动日志
journalctl

# 查看内核日志
journalctl -k

# 查看系统本次启动的日志
journalctl -b
journalctl -b -0

# 查看上一次启动的日志(需更改设置)
journalctl -b -1

# 查看指定时间的日志
sudo journalctl --since="2012-10-30 18:17:16"
sudo journalctl --since "20 min ago"
sudo journalctl --since yesterday
sudo journalctl --since "2015-01-10" --until "2015-01-11 03:00"
sudo journalctl --since 09:00 --until "1 hour ago"

# 显示尾部的最新10行日志
sudo journalctl -n

# 显示尾部指定行数的日志
sudo journalctl -n 20

# 实时滚动显示最新日志
sudo journalctl -f

  

原文地址:https://www.cnblogs.com/milton/p/11971004.html