Yang saya maksud di bawah pertanyaan adalah: apakah ada cara untuk membuang daftar yang dipesan (seperti pstree lakukan untuk proses) untuk melihat bagaimana systemd mengeksekusi set unit yang disediakan, yaitu pohon setelah dependensi diselesaikan dan pekerjaan antri untuk pelaksanaan ? Saya tahu Anda dapat melakukannya dengan menganalisis data status systemd, tetapi apakah ada cara cepat untuk melihat pohon seperti itu? Ini akan banyak membantu dalam investigasi kegagalan (mis. Jika Anda melihat bahwa proses boot macet pada beberapa unit Anda akan dapat menentukan perkiraan lokasi untuk investigasi lebih dalam Anda.
63
Jawaban:
systemd-analyze
adalah temanmu Misalnyasystemd-analyze critical-chain
keluaran memblokir pohon daemon. Milik saya misalnya:NetworkManager misalnya pada dasarnya menahan seluruh bootup.
Jika Anda ingin memiliki tampilan yang lebih rinci, Anda dapat membuat seluruh rantai eksekusi dalam file svg.
systemd-analyze plot > something.svg
menampilkan seluruh rantai (120+ modul) sebagai bilah kemajuan ke file beresolusi tinggi yang menunjukkan status, yang diblokir dan masalah lainnya.Akhirnya Anda memiliki
systemd-analyze dot
alat yang menghasilkan file dot yang menghasilkan seluruh hierarki:systemd-analyze dot | dot -Tpng -o stuff.png
dengan alat dot Anda dapat menampilkannya sebagai file ps dan svg juga.Semua alat di atas adalah built-in di alat systemd-analysis yang datang secara default dengan systemd di archlinux setidaknya. Saya pikir ada beberapa proyek pihak ke-3 yang menghadapinya juga.
sumber
systemd-analyze plot > something.svg
penuh tiga eksekusi dengan target (ini adalah yang paling dekat yang Anda inginkan). systemd-analysis dot adalah grafik penuh dependensi (ini adalah representasi yang paling benar). Bukankah ini yang kamu inginkan? Dalam plot hanya menemukan target dan melihat apa yang perlu dijalankan. Dependensi yang sama persis dengan grafik terdaftar, jika terlalu banyak menjalankan beberapa toolkit analisis grafik dan pilih titik grafik yang ingin Anda lihat dependensinya (dot tool memiliki lebih banyak pengaturan). Lihat halaman manual: freedesktop.org/software/systemd/man/systemd-analyze.html --pesanan dan sejenisnya$ systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg > avahi.svg
$ eog avahi.svg
Ini memplot dependensi antara semua unit target yang diketahui:systemd-analyze dot --to-pattern='*.target' --from-pattern='*.target' | dot -Tsvg > targets.svg
$ eog targets.svg
Mungkin masih belum sepenuhnya menjawab pertanyaan Anda tetapi coba dengan
--fuzz
opsiCatatan Anda juga dapat menentukan unit s untuk melihat rantai kritisnya , sehingga Anda tidak terbatas pada multi-user.target
Semoga ini membantu
sumber
Tidak yakin saya memahami pertanyaan dengan benar, tetapi ada visualisasi pohon yang tersedia dengan perintah berikut:
Dan juga :
Semoga ini membantu :)
Juga, mungkin berguna untuk keperluan lain untuk membangun pohon folder symlinks systemctl:
Sebenarnya sangat berguna untuk mengetahui unit lama / kereta yang memperlambat startup sistem saya, untuk menonaktifkannya kemudian menggunakan
systemctl disable
perintah.SUNTING
Yang mengatakan saya sangat setuju dengan OP bahwa fungsi dasar ini harus diberikan melalui alat baris perintah, dan bukan alat grafis ... Bagaimana jika Anda tidak dapat memulai X? Bagaimana Anda menangani file svg Anda?
Sebenarnya ada jalan. Jika Anda tidak dapat menggunakan
scp
(alat ssh) untuk mengambil file Anda di komputer lain,fbi
mungkin sebenarnya membantu Anda :)Bekerja di TTY saya. Navigasi saja di dalam gambar dengan panah. Ada opsi pembesaran, untuk daftar lakukan
fbi -h
.Sekali lagi saya berharap ini membantu. Ini tersedia di Archlinux dan repos Ubuntu.
EDIT 2:
fbi
tidak bekerja melebihi ssh. Anda dapat melakukan penerusan X seperti inissh -Y user@server
, tetapi Anda memerlukan server X yang berjalan di server jarak jauh Anda.Taruhan terbaik di sini adalah menggunakan
sshfs
. Ini berfungsi BESAR di userspace, misalnya dengan nautilus. Ada sedikit konfigurasi yang harus dilakukan, lihat:sumber
sshfs
bekerja lebih baik. Lihat EDIT 2.