直接用 systemd-analyze time、blame --no-pager 和 critical-chain 三步即可精准定位开机瓶颈:time 判断 kernel/initrd/userspace 哪段耗时异常;blame 找出耗时 ≥1s 的 service 或 .mount 单元;critical-chain 通过 @ 时间差识别真实阻塞点,如 network-online.target 与 networkmanager-wait-online.service 间 4.3s 等待即为真瓶颈。

直接用 systemd-analyze 一套命令组合就能精准定位真正拖慢开机的“罪魁祸首”——它不是看谁自己跑得久,而是看谁卡在关键路径上、让后面一堆服务干等。
先看总耗时在哪被吃掉
运行:
systemd-analyze time
输出类似:Startup finished in 1.234s (kernel) + 3.456s (initrd) + 12.789s (userspace) = 16.479s
- 如果 userspace 占比超 80%(比如 12s/16s),说明问题出在服务层,下一步必须进
blame和critical-chain; - 如果
initrd高,重点查/etc/crypttab是否要输密码、RAID/LVM 扫描是否卡住; - 如果
kernel超 1s,检查 BIOS Fast Boot、NVMe 驱动是否内置、Secure Boot 是否引发额外验证。
再抓最可疑的服务名单
运行:
systemd-analyze blame --no-pager
重点关注:
- 耗时 ≥ 1000ms(即 ≥1 秒)的
.service,比如:5.234s NetworkManager-wait-online.service3.890s docker.service2.100s snapd.service - 别漏掉
.mount单元,例如/mnt/backup.mount @4.5s—— 很可能/etc/fstab里写了已拔掉的硬盘或不可达 NFS,且没加nofail或x-systemd.timeout=5; - 注意:
blame只统计服务自身ExecStart时间,不反映它被卡了多久。所以高耗时 ≠ 真瓶颈,只是“嫌疑最大”。
最后锁定真实阻塞链路
运行:
systemd-analyze critical-chain
它输出的是从 multi-user.target 向上回溯的最长串行依赖链,每级含:
-
@X.XXXs:该 unit 实际开始启动的时间点 -
+Y.YYYs:它自己花了多久 - 缩进:下级依赖上级,必须等完才能启动
关键判断法:
- 找相邻两行之间
@时间差最大 的地方(不是+最大),比如:network-online.target @6.501s └─NetworkManager-wait-online.service @2.199s +4.302s
这里
@差 4.3 秒,说明network-online.target等了快 4.3 秒才等到它——这就是瓶颈节点;
圣时代项目进程管理系统下载一个OA雏形,主要是完成项目进程管理的功能。 主要实现: 1。新建项目,设定到期时间,如果超过时间自动转为过期项目。 2。过期项目自动提醒,可自定义设定提醒时间或设定几天一次提醒。 3。自己建立的项目只有自己和超级用户有操作权限。 3。重要的项目可设为重要,有醒目标记,如不想被别人看到的项目可以设为独享,此项目只有自己和管理员可以看到。 4。新项目建立人自动显示为登陆时的用户名,可指定多负责人,如
- 常见真凶:
NetworkManager-wait-online.service(DHCP 超时默认 30 秒)systemd-networkd-wait-online.service(无 DHCP 环境易卡死)docker.service或kubelet.service(实际被containerd.service卡住)
想直击某个服务?指定它查上游:
systemd-analyze critical-chain docker.service
这样跳过无关分支,一眼看到它被谁卡、又卡住了谁。
补充验证手段
- 查日志确认原因:
journalctl -u NetworkManager-wait-online.service --since "1 hour ago"
- 检查是否被跳过(比如条件不满足):
systemctl list-units --state=inactive | grep -i "wait\|net\|docker" journalctl -b | grep "skipping"
- 临时禁用测试:
sudo systemctl disable --now NetworkManager-wait-online.service
重启后对比
systemd-analyze time,看 userspace 是否明显下降。
不复杂但容易忽略。










