Linux 查看系统启动耗时的方法

2次阅读

Linux 查看系统启动耗时的方法

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.servicecontainerd.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:临时提升日志级别获取更详细计时信息(仅调试用,不建议长期开启)
text=ZqhQzanResources