systemd-analyze
是一个用于分析和诊断 Systemd 启动性能的命令行工具,主要用于分析和优化systemd系统启动速度。
https://opensource.com/article/20/9/systemd-startup-configuration
https://blog.csdn.net/easylife206/article/details/103790052
https://www.redhat.com/sysadmin/mastering-systemd
https://www.jinbuguo.com/systemd/systemd-analyze.html
包括:
单元文件目录、配置片段目录(.d)、 依赖关系目录(.wants 与 .requires)。
与 --user 一起使用时表示针对 systemd 用户实例。
与 --global 一起使用时表示针对 systemd 用户实例的全局配置。
# 列出与单元相关的全部目录
systemd-analyze unit-paths
# 查看systemd启动总耗时
systemd-analyze
# 查看systemd启动耗时明细
systemd-analyze blame
# 显示系统启动过程中关键的systemd单元(units)之间的依赖关系和时间信息
systemd-analyze critical-chain
可以看到network.service
耗时 最长,花了17.201
秒。
这里的记时有可能是等待其他服务器启动的,再来看看其关联服务的启动时间:
# 查看指定服务启动依赖关系和时间信息
systemd-analyze critical-chain network.service
# 查看有哪些开机启动的服务可被优化
systemctl list-unit-files --type=service | grep enabled
# 导出到SVG分析图
systemd-analyze plot > /tmp/bootup.svg
# 生成描述单元间依赖关系的 SVG 图
systemd-analyze dot | dot -Tsvg > systemd.svg
创建新的单元文件后,验证其语法是否正确,如果配置正确
,不会有输出
。
# 服务单元(units)文件验证
systemd-analyze verify 服务单元路径
# 分析指定服务单元的安全性和沙箱设置
systemd-analyze security 服务单元
# 查看systemd当前设置的日志级别
systemctl -pLogLevel show
# 临时修改systemd的日志级别为notice
systemd-analyze set-log-level notice
# 查看systemd当前设置的日志级别
systemctl -pLogLevel show
# 修改systemd配置文件
vim /etc/systemd/system.conf
# 修改完配置后重启systemd守护进程
systemctl daemon-reload
# 打印systemd守护进程当前的日志等级
systemd-analyze get-log-level
# 打印systemd 守护进程当前的日志目标
systemd-analyze get-log-target
# 将systemd守护进程的日志目标更改为 TARGET
systemd-analyze set-log-target TARGET
# 查看所有过滤器
systemd-analyze syscall-filter
systemd-analyze syscall-filter [SET…] 如果指定了至少一个 SET 参数,那么仅显示指定的集合所包含的系统调用列表; 否则显示全部系统调用集合的详情。注意,必须在 SET 参数中包含 “@” 前缀。
# 查看指定过滤器
systemd-analyze syscall-filter @ipc