Под вопросом я имею в виду: есть ли способ вывести упорядоченный список (как это делает pstree для процессов), чтобы увидеть, как systemd выполнил предоставленный набор модулей, то есть дерево после того, как зависимости были разрешены, и задания были поставлены в очередь для выполнения ? Я знаю, что вы можете сделать это, проанализировав данные о состоянии systemd, но есть ли быстрый способ увидеть такое дерево? Это очень поможет при расследовании сбоев (например, если вы увидите, что процесс загрузки застрял на каком-либо устройстве, вы сможете точно определить приблизительное местоположение для вашего более глубокого расследования.
63
Ответы:
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-analysis, который поставляется по умолчанию с systemd по крайней мере в archlinux. Я думаю, что есть сторонние проекты, которые тоже занимаются этим.
источник
systemd-analyze plot > something.svg
полон три выполнения с целями (это самое близкое, что вы хотите). Точка systemd-analysis является полным графиком зависимостей (это наиболее правильное представление). Разве это не то, что вы хотите? В сюжете просто найдите цель и посмотрите, для чего она тоже нужна. Те же зависимости точно отображаются в графе, если он сильно запустит какой-то набор инструментов анализа графика и выберет точку графика, для которой вы хотите увидеть зависимости (у инструмента точка больше настроек). См.$ 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
--fuzz
Возможно, еще не полностью отвечая на ваш вопрос, но попробуйте с опциейОбратите внимание, что вы также можете указать юниты s, чтобы увидеть их критическую цепочку , так что вы не ограничены multi-user.target
Надеюсь это поможет
источник
Не уверен, что я правильно понял вопрос, но есть древовидные визуализации, доступные с помощью следующих команд:
А также :
Надеюсь это поможет :)
Кроме того, для других целей может быть полезно построить дерево папок символьных ссылок systemctl:
На самом деле было действительно полезно выяснить старые / глючные модули, которые замедляли запуск моей системы, чтобы впоследствии отключить их с помощью
systemctl disable
команды.РЕДАКТИРОВАТЬ
Тем не менее, я действительно согласен с ОП, что эту базовую функциональность следует предоставлять с помощью инструментов командной строки, а не графического инструмента ... Что если вы не можете запустить X? Как тогда вы справляетесь со своим SVG-файлом?
На самом деле, есть способ. Если вы не можете использовать
scp
(ssh tool) для загрузки вашего файла на другой компьютер, этоfbi
может вам помочь :)Работал в моих TTY. Просто перемещайтесь внутри картинки со стрелками. Есть варианты масштабирования, чтобы список сделать
fbi -h
.Я снова надеюсь, что это поможет. Он доступен в репозиториях Archlinux и Ubuntu.
РЕДАКТИРОВАТЬ 2:
fbi
не работает над ssh. Вы можете сделать переадресацию X таким образомssh -Y user@server
, но вам нужен X-сервер, работающий на вашем удаленном сервере.Лучше всего здесь использовать
sshfs
. Он отлично работает в пользовательском пространстве, например, с помощью nautilus. Есть небольшая конфигурация, смотрите:источник
sshfs
работает еще лучше. См. РЕДАКТИРОВАТЬ 2.