Ce que je veux dire sous la question est: existe-t-il un moyen de vider la liste ordonnée (comme le fait pstree pour les processus) pour voir comment systemd a exécuté l'ensemble d'unités fourni, c'est-à-dire l'arborescence après la résolution des dépendances et les tâches ont été mises en file d'attente pour l'exécution ? Je sais que vous pouvez le faire en analysant les données d'état de systemd, mais existe-t-il un moyen rapide de voir un tel arbre? Cela aiderait beaucoup dans l'enquête sur les défaillances (par exemple, si vous voyez que le processus de démarrage était bloqué sur une unité, vous seriez en mesure de déterminer l'emplacement approximatif de votre enquête plus approfondie.
systemd-analyze
est votre ami. Par exemple systemd-analyze critical-chain
affiche l'arbre de blocage des démons. La mienne par exemple:
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
└─[email protected] @8.472s +696ms
└─dev-sda6.device @8.471s
NetworkManager, par exemple, tient essentiellement le démarrage complet.
Si vous voulez avoir une vue plus détaillée, vous pouvez rendre la chaîne d'exécution entière dans un fichier svg. systemd-analyze plot > something.svg
affiche toute la chaîne (120+ modules) sous forme de barres de progression vers un fichier svg haute résolution qui affiche les états, qui sont bloqués et d'autres problèmes.
Enfin, vous avez systemd-analyze dot
outil qui génère un fichier de points qui génère une hiérarchie entière: systemd-analyze dot | dot -Tpng -o stuff.png
avec l'outil point, vous pouvez également le produire sous forme de fichiers ps et svg.
Tous les outils ci-dessus sont intégrés dans l'outil d'analyse systemd qui est fourni par défaut avec systemd dans archlinux au moins. Je pense qu'il y a aussi des projets de tiers traitant de cela.
Je ne suis pas sûr de bien comprendre la question, mais des visualisations arborescentes sont disponibles avec les commandes suivantes:
Sudo systemctl status
Et aussi :
Sudo systemctl list-dependencies
J'espère que cela t'aides :)
En outre, il peut être utile à d'autres fins de créer une arborescence des dossiers de liens symboliques systemctl:
tree /etc/systemd/system
Il était en fait très utile de comprendre les anciennes unités/buggy qui ralentissaient le démarrage de mon système, pour les désactiver ensuite en utilisant le systemctl disable
commande.
ÉDITER
Cela dit, je suis vraiment d'accord avec l'OP que cette fonctionnalité de base devrait être fournie via des outils de ligne de commande, et non un outil graphique ... Et si vous ne pouvez pas démarrer X? Comment gérez-vous votre fichier svg alors?
En fait, il existe un moyen. Si vous ne pouvez pas utiliser scp
(outil ssh) pour récupérer votre fichier sur un autre ordinateur, fbi
pourrait en fait vous aider :)
Sudo systemd-analyze plot > /home/user/startup.svg
fbi /home/user/startup.svg
A travaillé dans mes ATS. Naviguez simplement à l'intérieur de l'image avec des flèches. Il existe des options de zoom, pour lister faire fbi -h
.
Encore une fois, j'espère que cela vous aidera. Il est disponible dans les dépôts Archlinux et Ubuntu.
EDIT 2:
fbi
ne fonctionne pas sur ssh. Vous pouvez faire un transfert X comme ceci ssh -Y user@server
, mais vous avez besoin d'un serveur X fonctionnant sur votre serveur distant.
Le meilleur pari ici est d'utiliser sshfs
. Cela fonctionne très bien dans l'espace utilisateur, par exemple avec nautilus. Il y a une petite configuration à faire, voir:
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 [email protected]:/home/user /mnt/yourmountingdir/ -o allow_other #Asks for Host trusting and password
Sudo fusermount -u /mnt/yourmountingdir/ #To disconnect and unmount
Peut ne pas encore répondre complètement à votre question, mais essayez avec --fuzz
option
systemd-analyze critical-chain --fuzz 1h
Notez que vous pouvez également spécifier l'unité s pour voir leur chaîne critique , donc vous n'êtes pas limité à la multi-user.target
systemd-analyze critical-chain network.target local-fs.target
J'espère que cela t'aides