systemd-analyze blame 用于按耗时降序列出系统启动中各单元初始化时间,定位启动瓶颈;支持 head/tail 筛选、critical-chain 分析依赖、status 查看详情,并可导出日志或 CSV。

systemd-analyze blame 是 systemd 自带的诊断工具,用于列出系统启动过程中各单元(主要是服务)的初始化耗时,并按时间从长到短排序,方便快速定位拖慢启动速度的服务。
基本用法:直接运行命令
在终端中执行:
systemd-analyze blame
输出类似:
5.234s NetworkManager-wait-online.service
2.876s plymouth-quit-wait.service
1.943s docker.service
1.320s sshd.service
...
每行格式为 耗时 + 空格 + 单元名,默认已按耗时降序排列(最长的排最前)。
只看前 N 个最慢的服务
配合 head 命令可聚焦瓶颈:
systemd-analyze blame | head -n 10
管理和控制 macOS 系统功能。包括查看系统信息、管理进程、控制音量/亮度、 网络管理、电源管理、截图、剪贴板、Finder 操作等。当用户要求查看系统状态、 控制系统设置、管理进程、截图、调节音量亮度、查看网络信息、 关机重启睡眠等 Mac 系统操作时使用。
例如查看最拖慢启动的前 10 项。也可用 tail 查看耗时最短的几项(辅助判断是否普遍偏慢)。
排除“假性耗时”干扰项
某些服务显示耗时很长,但实际是等待依赖或被其他服务阻塞(如 NetworkManager-wait-online.service),并非自身执行慢。需结合依赖关系分析:
- 用
systemd-analyze critical-chain查看启动路径上的关键依赖链 - 用
systemctl status <unit></unit>检查具体服务的Load、Active、Start时间戳 - 注意区分
.service和.target—— target 本身不耗时,但其下服务会累加到它名下(如multi-user.target显示高耗时通常是其子服务导致)
导出结果便于分析或存档
保存为文本文件供后续比对:
systemd-analyze blame > boot-blame.log
若需 CSV 格式(如导入表格软件),可用简单转换:
systemd-analyze blame | awk '{print $1 "," $2}' > blame.csv
注意:耗时字段含单位(s/ms),awk 处理时需确保空格分隔正确;更稳妥的方式是用 sed 提取第一列和剩余部分。

















