Jak systemctl planuje zamknięcie systemu?

12

Kiedy piszę shutdown -h +30, Linux w jakiś sposób planuje zmianę poziomu uruchamiania w ciągu 30 minut. Na Debianie /sbin/shutdownjest dowiązaniem symbolicznym /bin/systemctl. Moje badania wskazują, że shutdownma nie używać ani crona ani Systemd timerów .

W jaki sposób realizowane jest zamknięcie systemu systemd?

patryk.beza
źródło

Odpowiedzi:

11

Dobre pytanie. Próbowałem tego, co teraz zdaję sobie sprawę, że musiałeś spróbować - zaplanować zamknięcie systemu i odpytać o systemowe liczniki czasu!

To pokazało, że zamknięcie nie było w czasach systemowych, jak zauważyłeś. Zatem szybkie przejrzenie źródła systemctl daje nam to wywołanie w ramach halt_main():

r = sd_bus_call_method(
                       b,
                       "org.freedesktop.login1",
                       "/org/freedesktop/login1",
                       "org.freedesktop.login1.Manager",
                       "ScheduleShutdown",
                       &error,
                       NULL,
                       "st",
                       arg_action == ACTION_HALT     ? "halt" :
                       arg_action == ACTION_POWEROFF ? "poweroff" :
                       arg_action == ACTION_KEXEC    ? "kexec" :
                                                       "reboot",
                       arg_when);

( systemctl.c linia 7387 )

Wygląda więc na to, że wyłączeniami są obsługiwane przez logind. Możesz kontynuować śledzenie szczegółów, jeśli chcesz login-dbus.c. Istnieją metody planowania, anulowania i zarządzania wyłączeniami. Ale dla głębszego zrozumienia, być może będziesz musiał wiedzieć więcej o logind / systemd niż ja.

Krótko mówiąc, informacje o wyłączeniu są przechowywane (przynajmniej) w pliku harmonogramu w /run/systemd/shutdown/scheduled, moja zawartość jako przykład to:

USEC=1435715559055789
WARN_WALL=1
MODE=poweroff

Wskazanie czasu (przypuszczalnie w mikrosekundach); czy ostrzegać poprzez walli który tryb (cf restart, kexec itp.).

Mam nadzieję, że przynajmniej wskaże ci właściwy kierunek!

bertieb
źródło