Mam na myśli następujące pytanie: czy istnieje sposób na zrzucenie uporządkowanej listy (jak pstree robi dla procesów), aby zobaczyć, jak systemd wykonał dostarczony zestaw jednostek, tj. Drzewo po rozwiązaniu zależności i kolejkowaniu zadań do wykonania ? Wiem, że możesz to zrobić, analizując dane stanu systemowego, ale czy istnieje szybki sposób, aby zobaczyć takie drzewo? Bardzo by to pomogło w badaniu awarii (np. Jeśli zauważysz, że proces rozruchu utknął na jakiejś jednostce, będziesz w stanie wskazać przybliżoną lokalizację do głębszego badania.
63
Odpowiedzi:
systemd-analyze
jest twoim przyjacielem. Na przykładsystemd-analyze critical-chain
wyniki blokują drzewo demonów. Mój na przykład:NetworkManager na przykład w zasadzie trzyma cały rozruch.
Jeśli chcesz mieć bardziej szczegółowy widok, możesz renderować cały łańcuch wykonania w pliku svg.
systemd-analyze plot > something.svg
wysyła cały łańcuch (ponad 120 modułów) jako paski postępu do pliku svg wysokiej rozdzielczości, który pokazuje stany, które są zablokowane i inne problemy.Wreszcie masz
systemd-analyze dot
narzędzie, które generuje plik kropkowy, który generuje całą hierarchię:systemd-analyze dot | dot -Tpng -o stuff.png
za pomocą narzędzia kropkowego możesz wyprowadzać go również jako pliki ps i svg.Wszystkie powyższe narzędzia są wbudowane w narzędzie analizy systemowej, które jest domyślnie dostarczane z systememd przynajmniej w archlinuxie. Wydaje mi się, że istnieją też projekty stron trzecich.
źródło
systemd-analyze plot > something.svg
jest pełna trzy wykonanie z celami (jest najbliżej tego, czego chcesz). kropka analizowana systemowo jest pełnym wykresem zależności (jest najbardziej poprawną reprezentacją). Czy to nie to, czego chcesz? W fabule po prostu znajdź cel i zobacz, czego on też potrzebuje. Te same zależności są dokładnie wymienionymi wykresami, jeśli to znacznie uruchomi jakiś zestaw narzędzi do analizy wykresów i wybierz punkt wykresu, dla którego chcesz zobaczyć zależności (narzędzie kropki ma więcej ustawień). Zobacz stronę podręcznika : freedesktop.org/software/systemd/man/systemd-analyze.html - zamówienie i podobne$ systemd-analyze dot 'avahi-daemon.*' | dot -Tsvg > avahi.svg
$ eog avahi.svg
To działki zależności pomiędzy wszystkimi znanymi jednostkami docelowymi:systemd-analyze dot --to-pattern='*.target' --from-pattern='*.target' | dot -Tsvg > targets.svg
$ eog targets.svg
Może nadal nie w pełni odpowiedzieć na twoje pytanie, ale spróbuj z
--fuzz
opcjąUwaga Można także określić jednostkę s , aby zobaczyć ich krytyczną łańcuch , więc nie jesteś ograniczony do multi-user.target
Mam nadzieję że to pomoże
źródło
Nie jestem pewien, czy właściwie rozumiem pytanie, ale dostępne są wizualizacje drzewa za pomocą następujących poleceń:
I również :
Mam nadzieję że to pomoże :)
Ponadto może być przydatne do innych celów zbudowanie drzewa folderów dowiązań systemowych systemctl:
Naprawdę przydało się wykrycie starych / błędnych jednostek, które spowalniały uruchamianie mojego systemu, a następnie ich wyłączenie za pomocą
systemctl disable
polecenia.EDYTOWAĆ
To powiedziawszy, naprawdę zgadzam się z PO, że tę podstawową funkcjonalność należy zapewnić za pomocą narzędzi wiersza poleceń, a nie narzędzia graficznego ... Co jeśli nie możesz uruchomić X-a? Jak sobie radzisz z plikiem SVG?
Właściwie istnieje sposób. Jeśli nie możesz użyć
scp
(narzędzia ssh) do pobrania pliku na innym komputerze,fbi
może ci to pomóc :)Pracowałem w moich TTY. Po prostu nawiguj wewnątrz obrazu za pomocą strzałek. Dostępne są opcje powiększania
fbi -h
.Znów mam nadzieję, że to pomoże. Jest dostępny w repozytoriach Archlinux i Ubuntu.
EDYCJA 2:
fbi
nie działa na ssh. Możesz wykonać przekazywanie X w ten sposóbssh -Y user@server
, ale potrzebujesz serwera X działającego na serwerze zdalnym.Najlepszym wyborem jest użycie
sshfs
. Działa WIELKO w przestrzeni użytkownika, na przykład nautilus. Jest trochę konfiguracji do zrobienia, patrz:źródło
sshfs
działa jeszcze lepiej. Zobacz EDYCJA 2.