我在这个问题下的意思是:有没有办法转储有序列表(就像pstree对进程一样),看看systemd如何执行提供的单元集,即依赖关系解析后的树和排队执行的作业?我知道你可以通过分析系统状态数据来做到这一点,但有没有快速的方法来看到这样的树?这对故障调查有很大帮助(例如,如果您发现启动过程卡在某个单元上,您就可以确定您进行深入调查的大致位置.
解决方法
systemd-analyze是你的朋友.
例如,systemd-分析阻塞守护树的关键链输出.
我的例如:
例如,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.我认为还有一些第三方项目也在处理它.