In che modo systemctl pianifica l'arresto del sistema?


12

Quando scrivo shutdown -h +30, Linux in qualche modo pianifica il cambio di runlevel entro 30 minuti. Su Debian, /sbin/shutdownc'è un collegamento simbolico a /bin/systemctl. I miei test indicano che shutdownfa non usa né crontimer systemd .

Come viene implementato l'arresto del sistema systemd?

Risposte:


11

Buona domanda. Ho provato quello che ora mi rendo conto che dovevi aver provato: programmare un arresto e interrogare i timer di systemd!

Ciò ha dimostrato che l'arresto non era nei timer di systemd, come hai notato. Quindi una rapida lettura della fonte systemctl ci dà questa chiamata, come parte di 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 linea 7387 )

Quindi sembrerebbe che gli arresti vengano gestiti logind. Puoi continuare a perseguire i dettagli se vuoi, vedi login-dbus.c. Esistono metodi per programmare, annullare, gestire gli arresti. Ma per una comprensione più profonda, potresti aver bisogno di sapere di più su logind / systemd di me.

Per farla breve, le informazioni di spegnimento sono memorizzate (almeno) in un file di pianificazione all'indirizzo /run/systemd/shutdown/scheduled, i miei contenuti come esempio erano:

USEC=1435715559055789
WARN_WALL=1
MODE=poweroff

Indicare il tempo (in microsecondi, presumibilmente); se avvisare tramite walle quale modalità (vedi riavvio, kexec ecc.).

Spero che questo ti indichi almeno nella giusta direzione!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.