我在这个问题下的意思是:有没有办法转储有序列表(就像 pstree 对进程所做的那样)以查看 systemd 如何执行提供的一组单元,即在解决依赖关系并且作业排队等待执行之后的树? 我知道你可以通过分析 systemd 状态数据来做到这一点,但是有没有一种快速的方法来查看这样的树?这将对故障调查有很大帮助(例如,如果您发现引导过程卡在某个单元上,您将能够确定大致位置以进行更深入的调查。
我在这个问题下的意思是:有没有办法转储有序列表(就像 pstree 对进程所做的那样)以查看 systemd 如何执行提供的一组单元,即在解决依赖关系并且作业排队等待执行之后的树? 我知道你可以通过分析 systemd 状态数据来做到这一点,但是有没有一种快速的方法来查看这样的树?这将对故障调查有很大帮助(例如,如果您发现引导过程卡在某个单元上,您将能够确定大致位置以进行更深入的调查。
systemd-analyze
是你的朋友。例如systemd-analyze critical-chain
输出阻塞的守护进程树。以我的为例:示例中的 NetworkManager 基本上保持整个启动。
如果您想获得更详细的视图,您可以在 svg 文件中呈现整个执行链。
systemd-analyze plot > something.svg
将整个链(120 多个模块)作为进度条输出到高分辨率 svg 文件,其中显示状态、被阻止和其他问题。最后,您有
systemd-analyze dot
输出点文件的工具,该文件输出整个层次结构:systemd-analyze dot | dot -Tpng -o stuff.png
使用点工具,您也可以将其输出为 ps 和 svg 文件。以上所有工具都内置在 systemd-analyze 工具中,该工具至少在 archlinux 中默认带有 systemd。我认为也有一些第 3 方项目在处理它。
不确定我是否正确理解了这个问题,但可以使用以下命令进行树形可视化:
并且 :
希望这可以帮助 :)
此外,构建 systemctl 符号链接文件夹的树可能对其他目的有用:
找出使我的系统启动速度变慢的旧/错误单元实际上非常有用,然后使用该
systemctl disable
命令禁用它们。编辑
这就是说我真的同意 OP 应该通过命令行工具而不是图形工具来提供这个基本功能......如果你不能启动 X 怎么办?那么你如何处理你的 svg 文件呢?
其实是有办法的。如果您不能使用
scp
(ssh 工具)在另一台计算机上获取您的文件,fbi
实际上可能会对您有所帮助:)在我的 TTY 工作。只需使用箭头在图片内部导航。有缩放选项,列出来
fbi -h
。我再次希望这会有所帮助。它在 Archlinux 和 Ubuntu 存储库中可用。
编辑 2:
fbi
不适用于 ssh。您可以像这样进行 X 转发ssh -Y user@server
,但您需要在远程服务器上运行 X 服务器。这里最好的选择是使用
sshfs
. 它在用户空间中运行良好,例如 nautilus。需要做一些配置,请参阅:可能仍未完全回答您的问题,但请尝试使用
--fuzz
选项请注意,您还可以指定 unit来查看它们的critical -chain,因此您不仅限于multi-user.target
希望这可以帮助