linux – 有没有办法看到systemd的执行树?

我在这个问题下的意思是:有没有办法转储有序列表(就像pstree对进程一样),看看systemd如何执行提供的单元集,即依赖关系解析后的树和排队执行的作业?我知道你可以通过分析系统状态数据来做到这一点,但有没有快速的方法来看到这样的树?这对故障调查有很大帮助(例如,如果您发现启动过程卡在某个单元上,您就可以确定您进行深入调查的大致位置.

解决方法

systemd-analyze是你的朋友.
例如,systemd-分析阻塞守护树的关键链输出.
我的例如:
graphical.target @20.211s
└─multi-user.target @20.211s
  └─nginx.service @19.348s +862ms
    └─network.target @19.347s
      └─NetworkManager.service @10.315s +9.031s
        └─basic.target @10.312s
          └─timers.target @10.311s
            └─systemd-tmpfiles-clean.timer @10.311s
              └─sysinit.target @10.295s
                └─systemd-update-utmp.service @10.167s +127ms
                  └─systemd-tmpfiles-setup.service @10.124s +41ms
                    └─local-fs.target @10.097s
                      └─home-entd-Downloads.mount @10.093s +2ms
                        └─home.mount @9.326s +672ms
                          └─systemd-fsck@dev-sda6.service @8.472s +696ms
                            └─dev-sda6.device @8.471s

NetworkManager在示例中基本上持有整个启动.

如果您想拥有更详细的视图,可以在svg文件中呈现整个执行链.
systemd-analyze plot> something.svg输出整个链(120个模块)作为进度条到高分辨率svg文件,显示状态,被阻止和另一个问题.

最后你有systemd-analyze点工具输出输出整个层次结构的点文件:
systemd-analyze dot | dot -Tpng -o stuff.png
使用点工具,您也可以将其输出为ps和svg文件.

所有上述工具都内置在systemd-analyze工具中,默认情况下至少在archlinux中使用systemd.我认为还有一些第三方项目也在处理它.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...