Soy consciente de seguir el hilo y supuestamente una respuesta. Excepto que una respuesta no es una respuesta en sentido genérico. Dice cuál era el problema en un caso particular, pero no en general.
Mi pregunta es:¿hay alguna forma de depurar los ciclos de pedidos en un genérico? ¿camino? Por ejemplo:¿hay un comando que describa el ciclo y qué vincula una unidad con otra?
Por ejemplo, tengo seguimiento en journalctl -b
(ignore la fecha, mi sistema no tiene RTC para sincronizar la hora):
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
donde cvol.service (el que se introdujo y que rompe el ciclo) es:
[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
Según journalctl, cvol.service quiere basic.service, excepto que no lo hace, al menos no obviamente. ¿Hay un comando que demuestre de dónde se deriva este enlace? Y, en general, ¿hay un comando que encuentre los ciclos y muestre dónde se origina cada enlace en el ciclo?
Respuesta aceptada:
Puedes visualizar el ciclo con los comandos systemd-analyze verify
, systemd-analyze dot
y GraphViz dot
herramienta:
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
Deberías ver algo como esto:
Aquí puedes ver el ciclo:c.service->b.service->a.service->c.service
Color legend:
black = Requires
dark blue = Requisite
dark grey = Wants
red = Conflicts
green = After
Enlaces:
- systemd-análisis(1)
- punto(1)