Ich kenne folgenden Thread und angeblich eine Antwort darauf. Nur ist eine Antwort keine Antwort im allgemeinen Sinne. Es sagt aus, was das Problem in einem bestimmten Fall war, aber nicht im Allgemeinen.
Meine Frage ist:Gibt es eine Möglichkeit, Bestellzyklen in einem Generikum zu debuggen? Weg? Beispiel:Gibt es einen Befehl, der den Zyklus beschreibt und was eine Einheit mit einer anderen verbindet?
Zum Beispiel habe ich folgendes in journalctl -b
(Bitte ignorieren Sie das Datum, mein System hat keine RTC, mit der die Zeit synchronisiert werden kann):
Jan 01 00:00:07 host0 systemd[1]: Found ordering cycle on sysinit.target/start
Jan 01 00:00:07 host0 systemd[1]: Found dependency on local-fs.target/start
Jan 01 00:00:07 host0 systemd[1]: Found dependency on cvol.service/start
Jan 01 00:00:07 host0 systemd[1]: Found dependency on basic.target/start
Jan 01 00:00:07 host0 systemd[1]: Found dependency on sockets.target/start
Jan 01 00:00:07 host0 systemd[1]: Found dependency on dbus.socket/start
Jan 01 00:00:07 host0 systemd[1]: Found dependency on sysinit.target/start
Jan 01 00:00:07 host0 systemd[1]: Breaking ordering cycle by deleting job local-fs.target/start
Jan 01 00:00:07 host0 systemd[1]: Job local-fs.target/start deleted to break ordering cycle starting with sysinit.target/start
wo cvol.service (der eingeführt wurde und der den Kreislauf durchbricht) ist:
[Unit]
Description=Mount Crypto Volume
After=boot.mount
Before=local-fs.target
[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/bin/cryptsetup open /dev/*** cvol --key-file /boot/***
[Install]
WantedBy=home.mount
WantedBy=root.mount
WantedBy=usr-local.mount
Laut Journalctl will cvol.service basic.service, außer dass es nicht so ist, zumindest nicht offensichtlich. Gibt es einen Befehl, der zeigt, woher dieser Link stammt? Und im Allgemeinen, gibt es einen Befehl, der die Zyklen findet und zeigt, wo jeder Link im Zyklus seinen Ursprung hat?
Akzeptierte Antwort:
Sie können den Zyklus mit den Befehlen systemd-analyze verify
visualisieren , systemd-analyze dot
und der GraphViz dot
Werkzeug:
systemd-analyze verify default.target |&
perl -lne 'print $1 if m{Found.*?ons+([^/]+)}' |
xargs --no-run-if-empty systemd-analyze dot |
dot -Tsvg >cycle.svg
Sie sollten so etwas sehen:
Hier sehen Sie den Zyklus:c.service->b.service->a.service->c.service
Color legend:
black = Requires
dark blue = Requisite
dark grey = Wants
red = Conflicts
green = After
Links:
- systemd-analyze(1)
- Punkt(1)