systemd-analyze 是诊断启动性能的核心工具,通过 blame、critical-chain、plot 和 verify 等子命令精准定位耗时单元与依赖瓶颈,指导针对性优化。

systemd-analyze 是 systemd 系统中诊断启动性能的核心工具,它不直接“优化”系统,但能精准定位拖慢开机的单元(服务、挂载、套接字等),是启动优化的第一步。
查清谁最耗时:用 analyze blame 和 critical-chain
开机慢?先看耗时大户:
-
systemd-analyze blame:按初始化耗时从高到低列出所有已启动单元。重点关注耗时 >500ms 的服务,比如
docker.service、NetworkManager-wait-online.service或自定义脚本。 -
systemd-analyze critical-chain:显示启动路径中最长依赖链(即决定整体启动时长的关键路径)。它会逐级展开,比如
multi-user.target → sshd.service → network-online.target → NetworkManager-wait-online.service—— 如果其中某环卡住,整条链就拖慢全局。
识别无效依赖与启动瓶颈
很多慢启动源于隐式依赖或同步等待:
装修公司源码,采用DIV+CSS布局,首页顶部采用了超大宽屏banner焦点图切换,带伸缩功能的导航条。首页信息展示量大,有利于SEO优化,首页版块包括,导航,焦点图切换,案例,行业动态,装修经验,装修知识。源码支持伪静态,后台开启即可,服务器必须支持rewrite功能,否则无法实现伪静态功能。信息支持二级分类。后台支持信息批量修改,删除,可以支持,视频,图片,附件上传。
- systemd-analyze plot > boot.svg:生成 SVG 时间线图,直观看到哪些服务并行启动、哪些被阻塞、哪些在空等(如等待网络就绪)。打开 SVG 文件可快速定位“长条+空白”的可疑单元。
-
systemd-analyze verify [unit]:检查特定服务单元语法和逻辑问题,例如循环依赖、缺失
WantedBy=、或错误使用After=而未配Requires=导致启动顺序失效。
针对性优化常见拖慢项
确认问题单元后,再动手调整,避免盲目禁用:
-
NetworkManager-wait-online.service:默认要求“网络完全就绪”才继续,常因 DHCP 超时卡住。若无需联网即启动服务,可禁用:
sudo systemctl disable NetworkManager-wait-online.service;或改用更轻量的systemd-networkd-wait-online.service并缩短超时:sudo systemctl edit systemd-networkd-wait-online.service,添加[Service] ExecStart=覆盖原命令,加--timeout=10。 -
无关服务开机自启:用
systemctl list-unit-files --state=enabled检查,对非必要服务(如bluetooth.service、ModemManager.service)执行sudo systemctl disable [service]。 -
挂载远程/慢速存储:检查
/etc/fstab中是否含_netdev缺失或nofail漏配的 NFS/CIFS 条目,这些可能阻塞启动。建议加x-systemd.automount改为按需挂载。
验证优化效果
每次调整后必须实测:
- 重启后运行
systemd-analyze查总耗时(如 “Startup finished in 3.2s”); - 对比前后
blame输出,确认目标服务耗时下降或消失; - 用
systemd-analyze log-level=debug(需提前配置)捕获详细日志,排查是否引入新延迟。
不复杂但容易忽略:优化不是删得越多越好,而是让关键服务更快就绪、非关键服务异步或延后。systemd-analyze 提供的是证据,决策靠理解依赖逻辑。









