
Linux 系统启动耗时可以通过 systemd-analyze 工具快速查看,这是 systemd 系统(主流发行版如 Ubuntu 16.04+、CentOS 7+、Debian 9+ 等)内置的分析命令,无需额外安装。
查看整体启动耗时
运行以下命令可获得从内核启动到用户空间服务就绪的总耗时,以及各阶段细分:
systemd-analyze time
输出类似:
Startup finished in 2.123s (kernel) + 4.567s (initrd) + 8.901s (userspace) = 15.592s
其中:
- kernel:内核加载并完成初始化的时间(BIOS/UEFI → kernel ready)
- initrd:初始 RAM 磁盘加载和执行时间(仅启用 initramfs 时显示)
- userspace:systemd 启动所有目标(如 default.target)所用时间
分析服务启动顺序与耗时
使用以下命令查看按启动耗时排序的服务列表(默认显示前 20 个最慢服务):
systemd-analyze blame
常见高耗时服务可能包括:
- NetworkManager-wait-online.service(等待网络就绪,常因 DHCP 超时拉长启动)
- docker.service 或 containerd.service(容器引擎初始化)
- 自定义或第三方服务(如数据库、监控代理)
若需查看全部服务,加 --no-pager 防止分页截断:systemd-analyze blame --no-pager
生成启动流程可视化图表
借助 systemd-analyze plot 可导出 SVG 格式的启动时序图,直观展示服务依赖与并行/串行关系:
systemd-analyze plot > boot-time.svg
然后用浏览器打开 boot-time.svg。图中横向为时间轴,每条色块代表一个 unit 的启动过程,重叠表示并行启动,空隙反映等待依赖。
注意:
- 需要安装 graphviz(部分系统已预装)
- 若提示 “Failed to get dependency graph”,可能是权限不足,尝试加 sudo(但通常不需要)
排查延迟根源的小技巧
除了看耗时数字,还可结合以下命令定位问题:
-
systemd-analyze critical-chain:显示启动关键路径(最长依赖链),指出拖慢整体启动的瓶颈服务 -
journalctl -b -u:查看特定服务本次启动的完整日志,确认是否卡在某一步(如超时、重试、权限错误) -
systemd-analyze log-level=debug time:临时提升日志级别获取更详细计时信息(仅调试用,不建议长期开启)










