Saya mengetahui utas berikut dan seharusnya menjawabnya. Kecuali jawaban bukanlah jawaban dalam arti umum. Ini memberi tahu apa masalahnya dalam satu kasus tertentu, tetapi tidak secara umum.
Pertanyaan saya adalah:apakah ada cara untuk men-debug siklus pemesanan dalam generik jalan? Misalnya:apakah ada perintah yang akan menjelaskan siklus dan apa yang menghubungkan satu unit ke unit lain?
Sebagai contoh, saya telah mengikuti di journalctl -b
(harap abaikan tanggal, sistem saya tidak memiliki RTC untuk menyinkronkan waktu):
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
di mana cvol.service (yang diperkenalkan, dan yang memutus siklus) adalah:
[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
Menurut journalctl, cvol.service menginginkan basic.service, kecuali bahwa tidak, setidaknya tidak jelas. Apakah ada perintah yang akan menunjukkan dari mana tautan ini berasal? Dan secara umum, apakah ada perintah, yang akan menemukan siklus dan menunjukkan dari mana setiap tautan dalam siklus berasal?
Jawaban yang Diterima:
Anda dapat memvisualisasikan siklus dengan perintah systemd-analyze verify
, systemd-analyze dot
dan GraphViz dot
alat:
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
Anda akan melihat sesuatu seperti ini:
Di sini Anda dapat melihat siklusnya:c.service->b.service->a.service->c.service
Color legend:
black = Requires
dark blue = Requisite
dark grey = Wants
red = Conflicts
green = After
Tautan:
- systemd-analyze(1)
- titik(1)