直接运行 sudo systemd-analyze plot > boot.svg 可生成含完整启动时序与服务依赖关系的 svg 图像,需 root 权限和持久化日志支持,支持指定 boot id 和结合其他命令聚焦分析。

直接运行 systemd-analyze plot > boot.svg 即可生成包含完整启动时序与服务依赖关系的 SVG 图像。
生成基础 SVG 启动时序图
该命令会采集系统启动过程中所有 unit 的加载、激活、启动时间戳,并按依赖顺序和时间轴渲染成矢量图。默认使用系统日志中最近一次成功启动的数据(需 root 权限读取 journald 日志)。
- 确保已启用 systemd 日志持久化(
/var/log/journal存在且有 recent boot 记录) - 以 root 运行:sudo systemd-analyze plot > boot.svg
- 输出文件可直接用浏览器(Chrome/Firefox)、Inkscape 或矢量图查看器打开
指定具体启动记录(避免默认选错 boot)
如果系统重启频繁,或想分析某次特定启动,先用 systemd-analyze list-boots 查看历史 boot ID,再用 --boot=<id></id> 指定:
-
sudo systemd-analyze list-boots→ 输出类似-1 0123456789abcdef... Mon 2024-04-01... -
sudo systemd-analyze --boot=-1 plot > boot-1.svg(-1表示最近一次)
过滤或聚焦关键服务(提升可读性)
原始 SVG 可能包含数百个 unit,难以聚焦重点。虽然 plot 本身不支持过滤参数,但可通过预处理日志或结合其他命令辅助分析:
- 用
systemd-analyze critical-chain快速定位启动瓶颈路径 - 用
systemd-analyze dot | dot -Tsvg > deps.svg生成依赖图(非时间轴,但更清晰展示 service 间依赖) - 若需裁剪 SVG,可用 Inkscape 手动隐藏非关键 layer,或用 Python + lxml 脚本删减
<g id="unit-xxx"></g>元素
常见问题与注意点
生成失败或图像空白通常源于权限或日志缺失:
- 普通用户运行会报错“Failed to get boot ID”——必须加
sudo - 若
/var/log/journal为空,需先执行sudo journalctl --rotate && sudo journalctl --vacuum-size=500M确保日志可用 - 图形中灰色竖线为时间轴,彩色横向条形为 unit 生命周期;箭头表示依赖触发关系(非严格时序先后)











