Answers:
systemd-analyze
是你的朋友。例如,systemd-analyze critical-chain
输出阻止守护程序的树。例如:
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 dot
一个输出点文件的工具,该文件输出整个层次结构:
systemd-analyze dot | dot -Tpng -o stuff.png
使用点工具,您也可以将其输出为ps和svg文件。
以上所有工具都是内置在systemd-analyze工具中的,默认情况下至少在archlinux中是systemd附带的。我认为也有一些第三方项目在处理它。
systemd-analyze plot > something.svg
有目标执行的全部三个(它最接近您想要的)。systemd-analyze点是依赖关系的完整图(这是最正确的表示形式)。这些不是您想要的吗?在绘图中,只需找到目标并查看需要运行的目标即可。相同的依存关系是完全列出的图,如果它可以激发一些图分析工具包并选择要查看其依存关系的图点(点工具具有更多设置)。参见手册页:freedesktop.org/software/systemd/man/systemd-analyze.html --order和类似内容
$ systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg > avahi.svg
$ eog avahi.svg
绘制所有已知目标单元之间的依赖关系:systemd-analyze dot --to-pattern='*.target' --from-pattern='*.target' | dot -Tsvg > targets.svg
$ eog targets.svg
不确定我是否正确理解了这个问题,但是以下命令可提供树可视化功能:
sudo systemctl status
并且 :
sudo systemctl list-dependencies
希望这可以帮助 :)
同样,为其他目的构建systemctl symlinks文件夹树可能很有用:
tree /etc/systemd/system
找出使我的系统启动速度变慢的旧/越野车,然后使用该systemctl disable
命令将其禁用实际上是非常有用的。
编辑
就是说,我真的同意OP的基本功能,应该通过命令行工具而不是图形工具来提供……如果无法启动X怎么办?那么您如何处理您的svg文件?
实际上,有一种方法。如果您不能使用scp
(ssh工具)在另一台计算机上获取文件,则fbi
可能会有所帮助:)
sudo systemd-analyze plot > /home/user/startup.svg
fbi /home/user/startup.svg
在我的TTY中工作。只需在带有箭头的图片内导航即可。有缩放选项,列出要执行的操作fbi -h
。
我再次希望这会有所帮助。它可以在Archlinux和Ubuntu仓库中使用。
编辑2:
fbi
不适用于ssh。您可以像这样进行X转发ssh -Y user@server
,但是您需要在远程服务器上运行X服务器。
这里最好的选择是使用sshfs
。它在用户空间中可以很好地工作,例如与鹦鹉螺一起使用。要做一些配置,请参阅:
sudo vim /etc/fuse.conf #type a, uncomment the user_allow_other line and ESC :wq
sudo mkdir /mnt/yourmountingdir
sudo chown user:user /mnt/yourmountingdir
sshfs user@remotemachine.com:/home/user /mnt/yourmountingdir/ -o allow_other #Asks for host trusting and password
sudo fusermount -u /mnt/yourmountingdir/ #To disconnect and unmount
sshfs
效果更好。参见编辑