Systemd yürütme ağacını görmenin bir yolu var mı?


63

Sorunun altında demek istediğim şudur: sistemli birimler kümesini nasıl yürüttüğünü görmek için sıralı listeyi (işlemler için pstree gibi) terk etmenin bir yolu var mı, yani bağımlılıklar çözüldükten ve ağaç yürütme için kuyruğa alındıktan sonra ? Sistem ve durum verilerini analiz ederek yapabileceğinizi biliyorum, ancak böyle bir ağacı görmenin hızlı bir yolu var mı? Başarısızlık soruşturmasında çok yardımcı olacaktır (örneğin, önyükleme işleminin bazı birimlere yapışmış olduğunu görürseniz, derinlemesine araştırmanız için yaklaşık konumu saptayabilirsiniz.


Systemd için bir görselleştirme aracı oluşturdum. Aracı github.com/ywiyogo/systemd-visual
Yongkie

Yanıtlar:


71

systemd-analyzesenin arkadaşın. Örneğin systemd-analyze critical-chaindaemons ağacını engelleyen çıktılar. Mesela:

graphical.target @20.211s
└─multi-user.target @20.211s
  └─nginx.service @19.348s +862ms
    └─network.target @19.347s
      └─NetworkManager.service @10.315s +9.031s
        └─basic.target @10.312s
          └─timers.target @10.311s
            └─systemd-tmpfiles-clean.timer @10.311s
              └─sysinit.target @10.295s
                └─systemd-update-utmp.service @10.167s +127ms
                  └─systemd-tmpfiles-setup.service @10.124s +41ms
                    └─local-fs.target @10.097s
                      └─home-entd-Downloads.mount @10.093s +2ms
                        └─home.mount @9.326s +672ms
                          └─systemd-fsck@dev-sda6.service @8.472s +696ms
                            └─dev-sda6.device @8.471s

NetworkManager, örnek olarak temelde tüm başlatmayı tutar.

Daha ayrıntılı bir görünüme sahip olmak istiyorsanız, yürütme zincirinin tamamını bir svg dosyasında görüntüleyebilirsiniz. systemd-analyze plot > something.svgtüm zinciri (120+ modüller) durumları gösteren, engellenen ve başka problemler gösteren yüksek çözünürlüklü svg dosyasına ilerleme çubuğu olarak çıkarır.

Sonunda, systemd-analyze dottüm hiyerarşiyi çıkaran nokta dosyasını çıkaran bir systemd-analyze dot | dot -Tpng -o stuff.png araca sahipsiniz : nokta aracıyla da ps ve svg dosyaları olarak çıktı alabilirsiniz.

Yukarıdaki araçların tümü, varsayılan olarak en az archlinux'da systemd ile gelen systemd-analyze aracında yerleşiktir. Sanırım onunla ilgilenen bazı 3. parti projeler var.


Cevabınız için teşekkürler, ancak soruları ele almıyor ve sadece sorumun bazı kısımlarını yineliyor (sistemin ve devlet verilerini analiz ederek nasıl yapılacağının farkında olduğumu belirttim). Bu nedenle soru, tüm bağımlılıklar çözüldükten sonra pstree benzeri bir açılış ağacının nasıl elde edileceğidir (ör. Açılış sonrası). Kritik zincir neredeyse bitti (aşağıdan yukarıya bir ağaç olmasına rağmen) ancak başlatılan tüm birimleri listelemiyor. Soruda sorulan sorular: Bir noktaya kadar yürütülen her bir birimin listelendiği bir ağaç (örneğin, multi-user.target’a çarparak).
galaksi

4
systemd-analyze plot > something.svghedeflerle yürütmenin üçü doludur (istediğinize en yakın olandır). systemd-analyze dot, bağımlılıkların tam grafiğidir (en doğru temsildir). Bunlar istediğin şey değil mi? Arsada sadece hedef bulun ve çalıştırılması gereken şeyleri görün. Aynı bağımlılıklar tam olarak listelenir, eğer bazı grafik analiz araç takımlarını yakar ve bağımlılıklarını görmek istediğiniz grafik noktasını seçerse (nokta aracı daha fazla ayara sahiptir). Man sayfasına bakınız: freedesktop.org/software/systemd/man/systemd-analyze.html --order ve benzeri
IBr

1
Man sayfasından: Bu, adı "avahi-daemon" ile başlayan herhangi bir birimin bütün bağımlılıklarını gösterir: $ systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg > avahi.svg $ eog avahi.svgBu, bilinen tüm hedef birimler arasındaki bağımlılıkları gösterir:systemd-analyze dot --to-pattern='*.target' --from-pattern='*.target' | dot -Tsvg > targets.svg $ eog targets.svg
IBr

1
IBr, ama bu ne yazık ki, metin konsolunda kullanılamaz. Cevabınıza harcadığınız zaman için gerçekten minnettarım (ve analiz etmek için bazı veriler almak istiyorsanız doğru), ancak orijinal soruyu ele almıyor, bu yüzden kabul edebilirim. Üzgünüm.
galaksi

1
Tamam sorun değil. Komut satırı araçlarını kendim seviyorum :)
IBr

13

Sorunuzu tam olarak yanıtlamayabilir, ancak --fuzzseçeneği deneyin

systemd-analyze critical-chain --fuzz 1h

Ayrıca birim belirtebilirsiniz Not ler onların görmek kritik zinciri sen bunlarla sınırlı değil bu yüzden, multi-user.target

systemd-analyze critical-chain network.target local-fs.target

Bu yardımcı olur umarım


12

Soruyu tam olarak anladığımdan emin değilim, ancak aşağıdaki komutlarla kullanılabilen ağaç görselleştirmeleri var:

sudo systemctl status

Ve ayrıca :

sudo systemctl list-dependencies 

Bu yardımcı olur umarım :)

Ayrıca, diğer amaçlarla systemctl sembolik dosyalarının bir ağacını oluşturmak yararlı olabilir:

tree /etc/systemd/system

Sistem başlangıcımı yavaşlatan eski / buggy birimlerini bulmak, sonradan systemctl disablekomutu kullanarak onları devre dışı bırakmak gerçekten çok faydalı oldu .

DÜZENLE

Bu temel işlevselliğin grafiksel bir araç değil komut satırı araçlarıyla verilmesi gerektiği konusunda OP ile gerçekten aynı fikirdeyim ... Ya X'i başlatamazsan? SVG dosyanızla nasıl başa çıkıyorsunuz?

Aslında, bir yolu var. scpDosyanızı başka bir bilgisayarda almak için (ssh aracı) kullanamıyorsanız , fbisize gerçekten yardımcı olabilir :)

sudo systemd-analyze plot > /home/user/startup.svg
fbi /home/user/startup.svg

TTY'lerimde çalıştı. Sadece resmin içinde oklarla gezin. Yapılacaklar listesi için yakınlaştırma seçenekleri var fbi -h.

Yine umarım bu yardımcı olur. Archlinux ve Ubuntu depolarında mevcuttur.

EDIT 2:

fbissh üzerinde çalışmıyor X iletimini bu şekilde yapabilirsiniz ssh -Y user@server, ancak uzak sunucunuzda çalışan bir X sunucusuna ihtiyacınız vardır.

Buradaki en iyi bahis kullanmaktır sshfs. Kullanıcı alanında BÜYÜK çalışır, örneğin nautilus ile. Yapılacak küçük bir yapılandırma var, bakın:

sudo vim /etc/fuse.conf #type a, uncomment the user_allow_other line and ESC :wq
sudo mkdir /mnt/yourmountingdir
sudo chown user:user /mnt/yourmountingdir
sshfs user@remotemachine.com:/home/user /mnt/yourmountingdir/ -o allow_other #Asks for host trusting and password
sudo fusermount -u /mnt/yourmountingdir/ #To disconnect and unmount

Soru, bağımlılık kararından sonra geçirilen tüm aktif birimler sistemi için yürütme ağacı ile ilgilidir. Yani bu cevap bir bayan.
galaksi

Belki de sorunuz bir özellik isteği için uygun? Tabii ki yardımı olacak. Her neyse, bu cevabı soruna tökezledikten sonra gönderdim, çünkü bir şekilde biraz bilgiye ihtiyaç duyduğum başka bir soruya benziyordu ve bazı temel örneklerin eksik olduğunu hissettim (çalıştığınız ve çalışmadığı gibi) açıklamak için yardımcı), özellikle benim gibi System V init ve kullanışlı rc.conf dosyasını kaybettikten sonra mücadele eden insanlar için. Üzgünüm cevabım uymadı. Olumsuz bir aşağı oy değerinde değil.
Joel.O

Sorununuz için bir geçici çözüm ile düzenlenmiş. Umarım yine yardımcı olur.
Joel.O

Sunucumda FBI üzerinden FBI kullanamadım. Ama sshfsdaha iyi çalışıyor. Bkz. EDIT 2.
Joel.O
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.