我在这个问题下的意思是:是否有一种方法可以转储有序列表(如pstree用于处理进程),以查看systemd如何执行提供的单元集,即在解决依赖关系并将作业排队等待执行后的树?我知道您可以通过分析systemd状态数据来做到这一点,但是有没有一种快速的方法来查看这种树?这将对故障调查有很大帮助(例如,如果您发现引导过程卡在某个单元上,则可以查明大概位置以进行更深入的调查。

评论

我已经为systemd创建了可视化工具。您可以在github.com/ywiyogo/systemd-visual
中检查并尝试该工具。

#1 楼

systemd-analyze是您的朋友。例如,systemd-analyze critical-chain输出守护程序的阻塞树。 。

如果要查看更详细的视图,可以在svg文件中呈现整个执行链。最后,您将看到systemd-analyze plot > something.svg工具,该工具输出点文件,该点文件输出整个层次结构: ps和svg文件。

以上所有工具都是内置在systemd-analyze工具中的,默认情况下至少在archlinux中是systemd附带的。我认为也有一些第三方项目在处理它。

评论


感谢您的回答,但是它没有解决问题,只是重申了部分问题(我提到我知道一种通过分析systemd的状态数据来做到这一点的方法)。因此,问题是在解决所有依赖关系(例如后启动)后如何获得启动序列的类似pstree的树。关键链差不多(尽管它是一棵自下而上的树),但是没有列出所有启动的单元。问题是什么:一棵树,列出了直到某个时刻(例如击中多用户目标)所执行的每个单个单元。

–星系
2014年8月5日12:36

systemd-analyze plot> something.svg完整执行了三个目标(它最接近您想要的)。 systemd-analyze点是依赖关系的完整图(这是最正确的表示形式)。这些不是您想要的吗?在绘图中,只需找到目标并查看需要运行的目标即可。完全列出了相同的依存关系图,如果它可以激发一些图分析工具包并选择要查看其依存关系的图点(点工具具有更多设置)。请参见手册页:freedesktop.org/software/systemd/man/systemd-analyze.html --order和类似内容

– IBr
2014年8月6日10:45



从手册页:绘制名称以“ avahi-daemon。”开头的任何单元的所有依赖关系:$ systemd-analyze点“ avahi-daemon。*” dot -Tsvg> avahi.svg $ eog avahi.svg绘制所有已知目标单元之间的依赖关系:systemd-analyze dot --to-pattern ='*。target'--from-pattern ='*。target'|点-Tsvg> targets.svg $ eogtargets.svg

– IBr
2014年8月6日上午10:48

IBr,但是不幸的是,这在文本控制台中无法使用。我真的很感谢您在答案上花费的时间(如果您想获取一些数据进行分析是正确的),但是它不能解决原始问题,因此我可以接受。抱歉。

–星系
2014年8月7日在9:37

好的没问题。我自己也喜欢命令行工具:)

– IBr
2014年8月7日在9:51

#2 楼

不确定我是否正确理解了问题,但是以下命令提供了树可视化功能:

sudo systemctl status


还有: />
希望这会有所帮助:)

此外,为systemctl symlinks文件夹树构建树可能对其他目的也有用: >
找出导致系统启动速度变慢的旧/越野车,然后使用systemctl disable命令禁用它们,实际上非常有用。 >那表示我真的同意OP,应该通过命令行工具而不是图形工具来提供此基本功能。那么您如何处理svg文件呢?

实际上,有一种方法。如果您不能使用scp(ssh工具)在另一台计算机上获取文件,则fbi可能实际上会为您提供帮助:)只需使用箭头在图片内导航即可。有缩放选项,列出fbi -h。再次希望对您有所帮助。

编辑2:

fbi无法在ssh上运行。您可以像ssh -Y user@server这样进行X转发,但是您需要在远程服务器上运行X服务器。

最好的选择是使用sshfs。它在用户空间中可以很好地工作,例如与鹦鹉螺一起使用。要做一些配置,请参见:

sudo systemctl list-dependencies 


评论


问题是有关依赖关系解析后所有激活的系统单元systemd的执行树。所以这个答案是一个错过。

–星系
17年7月7日在6:28

也许您的问题很适合功能要求?当然可以。无论如何,我在遇到您的问题后就贴出了这个答案,因为它在某种程度上类似于我需要一些信息的另一个问题,而且我感到缺少一些基本的范例(例如您尝试过但不起作用的东西)有助于澄清),尤其是对于像我这样的人,在丢失了System V init及其方便的rc.conf文件后仍在挣扎。抱歉,我的回答不合适。虽然不值得一票。

– Joel.O
17年3月13日在8:57



使用解决您的问题的方法进行了编辑。希望它能再次有所帮助。

– Joel.O
17年3月13日在10:36

我无法在服务器上的ssh上使用fbi。但是sshfs的效果更好。参见编辑2。

– Joel.O
17年4月6日在8:45

#3 楼

可能仍不能完全回答您的问题,但请尝试使用--fuzz选项

systemd-analyze critical-chain --fuzz 1h


请注意,您还可以指定单位以查看其关键链,因此您不仅限于multi-user.target

systemd-analyze critical-chain network.target local-fs.target


希望对您有所帮助