Jsem si vědom následujícího vlákna a údajně i odpovědi na něj. Až na to, že odpověď není odpovědí v obecném smyslu. Říká, jaký byl problém v jednom konkrétním případě, ale ne obecně.
Moje otázka zní:existuje způsob, jak odladit cykly řazení v obecném způsob? Např.:existuje příkaz, který popíše cyklus a co spojuje jednu jednotku s druhou?
Například mám následující v journalctl -b
(neberte prosím datum v úvahu, můj systém nemá RTC, se kterým by se čas synchronizoval):
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
kde cvol.service (ta, která byla představena a která přerušuje cyklus) je:
[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
Podle journalctl cvol.service chce basic.service, až na to, že nechce, alespoň ne zjevně. Existuje příkaz, který by ukázal, odkud je tento odkaz odvozen? A obecně, existuje příkaz, který by našel cykly a ukázal, odkud každý odkaz v cyklu pochází?
Přijatá odpověď:
Cyklus můžete vizualizovat pomocí příkazů systemd-analyze verify
, systemd-analyze dot
a dot
GraphViz nástroj:
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
Měli byste vidět něco takového:
Zde můžete vidět cyklus:c.service->b.service->a.service->c.service
Color legend:
black = Requires
dark blue = Requisite
dark grey = Wants
red = Conflicts
green = After
Odkazy:
- systemd-analyze(1)
- tečka(1)