Como o systemctl agenda o desligamento do sistema?

12

Quando digito shutdown -h +30, o Linux de alguma forma programa a alteração do nível de execução em 30 minutos. No Debian, /sbin/shutdownexiste um link simbólico para /bin/systemctl. Meus testes indicam que shutdownnão não utilizar nem cron nem temporizadores Systemd .

Como o desligamento do sistema é implementado systemd?

patryk.beza
fonte

Respostas:

11

Boa pergunta. Tentei o que agora percebo que você deve ter tentado - agendar um desligamento e consultar os temporizadores do systemd!

Isso mostrou que o desligamento não estava nos temporizadores do systemd, como você observou. Portanto, uma rápida leitura da fonte systemctl nos dá essa chamada, como parte de 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);

( linha systemctl.c 7387 )

Portanto, parece que os desligamentos são tratados logind. Você pode continuar buscando os detalhes, se quiser login-dbus.c. Existem métodos para agendar, cancelar e gerenciar desligamentos. Mas, para uma compreensão mais profunda, talvez você precise saber mais sobre logind / systemd do que eu.

Para encurtar a história, as informações de desligamento são armazenadas (pelo menos) em um arquivo de agendamento em /run/systemd/shutdown/scheduled, o conteúdo do meu como exemplo:

USEC=1435715559055789
WARN_WALL=1
MODE=poweroff

Indicando tempo (em microssegundos, presumivelmente); se deve avisar via walle qual modo (cf restart, kexec etc).

Espero que isso aponte a direção certa, pelo menos!

bertieb
fonte