it-swarm.com.de

Gibt es eine Möglichkeit, den Ausführungsbaum von systemd anzuzeigen?

Was ich unter der Frage meine, ist: Gibt es eine Möglichkeit, die geordnete Liste (wie pstree für Prozesse) zu sichern, um zu sehen, wie systemd den bereitgestellten Satz von Einheiten ausgeführt hat, dh den Baum, nachdem die Abhängigkeiten aufgelöst und Jobs für die Ausführung in die Warteschlange gestellt wurden ? Ich weiß, dass Sie dies tun können, indem Sie Systemstatusdaten analysieren, aber gibt es eine schnelle Möglichkeit, einen solchen Baum zu sehen? Dies würde bei der Fehleruntersuchung sehr hilfreich sein (z. B. wenn Sie feststellen, dass der Startvorgang bei einem Gerät hängen geblieben ist, können Sie den ungefähren Ort für Ihre eingehendere Untersuchung ermitteln.

67
galaxy

systemd-analyze ist dein Freund. Beispielsweise systemd-analyze critical-chain gibt den blockierenden Dämonenbaum aus. Meins zum Beispiel:

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

Im Beispiel hält NetworkManager im Grunde den gesamten Startvorgang.

Wenn Sie eine detailliertere Ansicht wünschen, können Sie die gesamte Ausführungskette in einer SVG-Datei rendern. systemd-analyze plot > something.svg gibt die gesamte Kette (über 120 Module) als Fortschrittsbalken in eine hochauflösende SVG-Datei aus, in der blockierte Zustände und andere Probleme angezeigt werden.

Endlich hast du systemd-analyze dot Werkzeug, das eine Punktdatei ausgibt, die die gesamte Hierarchie ausgibt: systemd-analyze dot | dot -Tpng -o stuff.png mit dem Punktwerkzeug können Sie es auch als ps- und svg-Dateien ausgeben.

Alle oben genannten Tools sind in das Systemd-Analyse-Tool integriert, das standardmäßig mindestens mit systemd in Archlinux geliefert wird. Ich denke, es gibt auch Projekte von Drittanbietern, die sich damit befassen.

79
IBr

Ich bin mir nicht sicher, ob ich die Frage richtig verstehe, aber es gibt Baumvisualisierungen mit den folgenden Befehlen:

Sudo systemctl status

Und auch :

Sudo systemctl list-dependencies 

Hoffe das hilft :)

Es kann auch für andere Zwecke nützlich sein, einen Baum der systemctl-Symlinks-Ordner zu erstellen:

tree /etc/systemd/system

Es war wirklich nützlich, alte/fehlerhafte Einheiten herauszufinden, die meinen Systemstart verlangsamten, und sie anschließend mit dem Befehl systemctl disable Zu deaktivieren.

BEARBEITEN

Trotzdem stimme ich dem OP wirklich zu, dass diese grundlegende Funktionalität über Befehlszeilentools und nicht über ein grafisches Tool bereitgestellt werden sollte ... Was ist, wenn Sie X nicht starten können? Wie gehst du dann mit deiner SVG-Datei um?

Eigentlich gibt es einen Weg. Wenn Sie scp (ssh-Tool) nicht verwenden können, um Ihre Datei auf einem anderen Computer abzurufen, kann fbi Ihnen tatsächlich helfen :)

Sudo systemd-analyze plot > /home/user/startup.svg
fbi /home/user/startup.svg

Arbeitete in meinen TTYs. Navigieren Sie einfach mit Pfeilen ins Bild. Es gibt Zoomoptionen, um do fbi -h Aufzulisten.

Wieder hoffe ich, dass dies hilft. Es ist in Archlinux- und Ubuntu-Repos verfügbar.

EDIT 2:

fbi funktioniert nicht über ssh. Sie können die X-Weiterleitung wie folgt ausführen ssh -Y [email protected], Sie benötigen jedoch einen X-Server, der auf Ihrem Remote-Server ausgeführt wird.

Am besten verwenden Sie hier sshfs. Es funktioniert hervorragend im Userspace, zum Beispiel mit Nautilus. Es gibt eine kleine Konfiguration, siehe:

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
18
Joel.O

Möglicherweise wird Ihre Frage immer noch nicht vollständig beantwortet, aber versuchen Sie es mit --fuzz Möglichkeit

systemd-analyze critical-chain --fuzz 1h

Beachten Sie, dass Sie auch die Einheit s angeben können, um deren kritische Kette anzuzeigen, sodass Sie nicht auf die Multi- beschränkt sind. user.target

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

Hoffe das hilft

14
Ludovic Ronsin