Jak mogę przewidzieć kolejność zamknięcia systemu?


9

Czy jest sposób, aby systemdmi powiedzieć , w jakiej przybliżonej kolejności będzie zamykać usługi, gdy całkowicie zamknę cały system? Ponieważ systemdrównolegle wyłączy się, doceniam, że nie ma sposobu, aby poznać dokładną kolejność, ale nadal bardzo pomocne byłoby wiedzieć, jakie ograniczenia systemdnałożą na sekwencję wyłączania, najlepiej w postaci łatwej do zrozumienia wizualizacji.

Motywacja polega na tym, że przy opracowywaniu i debugowaniu plików serwisowych znacznie wygodniej byłoby uzyskać tę przewidywaną listę z wyprzedzeniem, niż robić prawdziwe zamknięcie, a następnie ponownie uruchamiać się i sprawdzać dzienniki za każdym razem, gdy chcę ustalić jaki wpływ na zmianę w pliku jednostki serwisowej lub inny aspekt konfiguracji systemd będzie miał na polecenie zamknięcia.

Miałem nadzieję, że coś takiego

systemctl list-dependencies --before shutdown.service

wykonałby zadanie, ale emituje tylko:

shutdown.service

Odpowiedzi:


2

Następujące mogą ci pomóc:

systemctl list-dependencies --before shutdown.target

Pozdrowienia,


3
Dzięki za wskazanie mojego głupiego błędu, że tak shutdown.targetnie jest shutdown.service. Jednak wciąż nie daje mi to zamówionej listy, o którą prosiłem, ale zamiast tego daje mi bardzo krótką listę, a nawet pustą w niektórych systemach.
Adam Spiers,

Niestety Systemd jest celowo nieprzejrzysty. W przypadku oldschoolowego stylu sysvinit prawdopodobnie można by dodać rejestrowanie do plików startowych i zarejestrować uruchomione procesy w pliku ze znacznikiem czasu - przynajmniej tak przyszło mi do głowy.
shevy

1
@AdamSpiers @Mohamed Salhi w zasadzie „przed” oznacza „zaczyna się przed”. Oznacza to, że polecenie, które chcesz, to systemctl list-dependencies --after shutdown.target... przynajmniej znajdzie wszystko, czego nie ma pierwsze polecenie. Jest również mylące, ponieważ shutdown.targetjest począwszy , ale wszystkie pozostałe jednostki są zatrzymując się , aw tym przypadku nie ma znaczenia, czy masz „przed” i „po” zamawiającego; zatrzymanie odbywa się przed rozpoczęciem w obu przypadkach.
sourcejedi

1

Kolejność zamykania jest zwykle odwrotnością kolejności uruchamiania.

To powiedziawszy, wszystkie demony są wysyłane sygnał wyłączenia i zajmie różną ilość czasu, aby faktycznie zamknąć i wyjść.

Przechodząc do zwykłego systemd, nie sądzę, aby można było pożytecznie przewidzieć, które usługi zakończą w jakiej kolejności. Ponadto zależności kontrolują niektóre sekwencje.


1
Racja - zdawałem sobie z tego sprawę z powodu równoległości. Jednak nie potrzebuję dokładnej kolejności - tylko które zamówienia są egzekwowane i które rzeczy mogą potencjalnie działać równolegle. Zaktualizuję moje pytanie, aby to wyjaśnić. Czy możesz również zakwalifikować się „zwykle”? Kiedy nie byłoby odwrotnie?
Adam Spiers,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.