直接运行systemd-analyze time命令,就能清晰地看到总耗时以及瓶颈所在阶段:它会输出kernel、initrd、userspace这三段连续的耗时,分别对应内核初始化、initramfs执行、systemd加载所有unit的时间。当userspace的耗时占比超过80%时,就需要使用blame --all命令来进一步排查处于activating或failed状态的.mount单元。

Linux怎么查看系统启动详细耗时

直接看 systemd-analyze time 就能知道总耗时和瓶颈在哪一阶段,不用猜、不用装额外工具——所有 systemd 系统(Ubuntu 16.04+、CentOS 7+、Debian 9+ 等)都自带这个命令。

用 systemd-analyze time 快速定位三段耗时分布

它输出类似 Startup finished in 1.234s (kernel) + 3.456s (initrd) + 12.789s (userspace) = 16.479s,这三个值不是并列关系,而是启动链上的连续阶段:

注意:systemd-analyze time 不包含 BIOS/UEFI 自检、GRUB 菜单停留、内核解压等前置时间,只反映 systemd 接管后的可测部分。

用 systemd-analyze blame --all 抓全慢单元

systemd-analyze blame默认只会列出状态为active.service.mount单元,然而,真正拖慢启动速度的,常常是那些卡在activating (start)状态,或者直接处于failed状态的.mount单元。比如说,/etc/fstab里写了已经拔掉的USB盘、无法访问的NFS地址等情况。

用 systemd-analyze critical-chain 看真实依赖瓶颈

systemd-analyze critical-chain 展示的是从启动起点到 default.target(或 graphical.target)的**最长依赖路径**,每一步都含实际耗时,比 blame 更能反映“为什么启动慢”。

生成 SVG 时序图辅助判断并行与阻塞

systemd-analyze plot > boot.svg 导出的图表能直观看出哪些服务是串行等待、哪些是并行启动,还能发现隐性依赖导致的空档。

真正卡住启动的单元,往往藏在 blame --all 里,尤其是那些没显示耗时数字、只卡在 activating 状态的 .mount 单元——它们不会出现在默认 blame 输出中,却可能让整条 critical-chain 多等 30 秒。

本文转载于:https://www.php.cn/faq/3004890.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。