systemd-analyze 命令 #
systemd-analyze
是一个用于分析 systemd 系统启动性能的工具。它可以帮助识别启动过程中的瓶颈,显示各个服务的启动时间,以及生成启动过程的可视化图表。
语法 #
systemd-analyze [选项...] 命令 [参数...]
常用命令 #
基本分析 #
1. 显示系统启动总时间 #
systemd-analyze
输出示例:
Startup finished in 4.915s (kernel) + 11.547s (userspace) = 16.462s
graphical.target reached after 11.530s in userspace
2. 显示各个服务的启动时间 #
systemd-analyze blame
输出示例:
8.225s NetworkManager-wait-online.service
3.156s dev-sda1.device
2.215s snapd.service
1.286s networkd-dispatcher.service
1.026s udisks2.service
989ms accounts-daemon.service
940ms dev-loop0.device
...
3. 显示启动过程中的关键链 #
systemd-analyze critical-chain
输出示例:
The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.
graphical.target @11.530s
└─multi-user.target @11.530s
└─snapd.service @9.315s +2.215s
└─basic.target @9.297s
└─sockets.target @9.297s
└─snapd.socket @9.297s
└─sysinit.target @9.289s
└─apparmor.service @8.980s +308ms
└─local-fs.target @8.975s
└─run-user-1000.mount @12.784s
└─local-fs-pre.target @8.974s
└─systemd-tmpfiles-setup-dev.service @4.822s +151ms
└─kmod-static-nodes.service @4.780s +39ms
└─systemd-journald.socket @4.775s
└─-.mount @4.775s
└─system.slice @4.775s
└─-.slice @4.775s
可视化分析 #
1. 生成启动过程的 SVG 图表 #
systemd-analyze plot > boot.svg
这将生成一个启动过程的 SVG 图表,可以在浏览器中打开查看。
2. 生成启动过程的 DOT 图表 #
systemd-analyze dot | dot -Tsvg > systemd.svg
需要安装 graphviz 包才能使用 dot 命令。
3. 生成特定单元的依赖图 #
systemd-analyze dot nginx.service | dot -Tsvg > nginx-deps.svg
安全分析 #
1. 分析系统安全设置 #
systemd-analyze security
这将显示系统中各个服务的安全评分和设置。
2. 分析特定服务的安全设置 #
systemd-analyze security nginx.service
验证和调试 #
1. 验证单元文件 #
systemd-analyze verify /etc/systemd/system/myservice.service
2. 转储单元配置 #
systemd-analyze dump
3. 日历事件计算 #
systemd-analyze calendar "Mon *-*-* 12:00:00"
这将计算下一次触发时间。
常见用法示例 #
1. 识别启动慢的服务 #
systemd-analyze blame | head -10
这将显示启动时间最长的 10 个服务。
2. 分析特定服务的启动时间 #
systemd-analyze critical-chain nginx.service
3. 生成启动过程的可视化图表 #
systemd-analyze plot > boot.svg
firefox boot.svg # 或其他浏览器
4. 检查系统启动时间随时间的变化 #
systemd-analyze time
systemd-analyze timestamp
5. 分析服务的安全性 #
systemd-analyze security --no-pager
6. 验证自定义服务文件 #
systemd-analyze verify /etc/systemd/system/myapp.service
注意事项 #
systemd-analyze
需要 systemd 作为系统的初始化系统- 某些命令(如
security
)可能需要较新版本的 systemd - 生成图表的命令可能需要安装额外的软件包(如 graphviz)
- 分析结果可能因系统配置和硬件而异
- 在生产环境中,应谨慎使用可能影响系统性能的分析工具