ZBLOG

systemd-analyze 可以查看各服务的启动顺序吗

是的,systemd-analyze 可以用于分析系统启动过程中的服务启动顺序和耗时。以下是具体的使用方法和相关命令:


1. 查看整体启动时间

   systemd-analyze time

输出示例:

   Startup finished in 2.345s (kernel) + 12.567s (userspace) = 14.912s 
   graphical.target reached after 12.540s in userspace

这里会显示内核空间和用户空间的启动耗时。


2. 查看各服务的启动顺序及耗时

   systemd-analyze blame

输出示例:

   5.234s NetworkManager-wait-online.service
   3.456s docker.service
   2.789s snapd.service
   1.234s udisks2.service
   ...

这会按耗时从高到低列出所有服务的启动时间,帮助识别哪些服务拖慢了启动过程。


3. 生成详细的启动流程链(依赖关系)

   systemd-analyze critical-chain [服务名]
  • 不指定服务时,默认显示 graphical.targetmulti-user.target 的依赖链:
    
     systemd-analyze critical-chain
    
  • 指定具体服务(例如查看 nginx.service):
    
     systemd-analyze critical-chain nginx.service
    
    输出会显示服务的依赖链及其耗时,例如: “` The time after the unit is active or started is printed after the “@” character. The time the unit takes to start is printed after the “+” character.

graphical.target @12.540s └─multi-user.target @12.540s

 └─nginx.service @2.345s +1.234s
   └─network-online.target @2.340s
     └─NetworkManager-wait-online.service @1.234s +5.234s
       └─NetworkManager.service @0.987s +0.234s
         ...

---

### 4. **生成可视化启动流程图(需安装 graphviz)**
   ```bash
   systemd-analyze dot | dot -Tsvg > boot.svg

这会生成一个 SVG 格式的启动依赖关系图,可用浏览器打开查看详细的服务启动顺序和依赖。


5. 其他实用命令

  • 检查服务的启动状态
    
     systemctl list-dependencies [服务名]  # 查看服务的依赖树
    
  • 分析系统初始化阶段的性能
    
     systemd-analyze plot > boot_analysis.html  # 生成完整的启动时间线报告(HTML格式)
    

注意事项:

  1. systemd-analyze blame 显示的是服务从开始到完成初始化的耗时,但某些服务可能异步启动(实际不影响整体启动时间)。
  2. 部分服务可能被其他服务阻塞(如等待网络),需结合 critical-chain 分析依赖关系。 3、如果需要更底层的分析(如内核阶段耗时),可结合 dmesg/var/log/boot.log(取决于系统配置)。

通过以上工具,可以全面了解系统启动过程中各服务的顺序、依赖和性能瓶颈。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=24178

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?