Как systemctl планирует отключение системы?


12

Когда я печатаю shutdown -h +30, Linux каким-то образом планирует изменение уровня выполнения в течение 30 минут. На Debian /sbin/shutdownесть символическая ссылка на /bin/systemctl. Мои тесты показывают , что shutdownвовсе не используют ни хроны , ни Systemd таймеры .

Как осуществляется отключение системы systemd?

Ответы:


11

Хороший вопрос. Я попробовал то, что теперь понял, что вы, должно быть, пытались запланировать завершение работы и запросить системные таймеры!

Это показало, что выключение не было в системных таймерах, как вы заметили. Итак, быстрое изучение источника systemctl дает нам этот вызов, как часть 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 строка 7387 )

Таким образом, кажется, что отключения обрабатываются logind. Вы можете продолжать заниматься деталями, если хотите - смотрите login-dbus.c. Там есть методы для планирования, отмены, управления выключениями. Но для более глубокого понимания вам, возможно, потребуется знать больше о logind / systemd, чем я.

Короче говоря, информация о выключении хранится (по крайней мере) в файле расписания по адресу /run/systemd/shutdown/scheduled, содержимое моего в качестве примера:

USEC=1435715559055789
WARN_WALL=1
MODE=poweroff

Время индикации (предположительно в микросекундах); следует ли предупреждать через wallи в каком режиме (cf restart, kexec и т. д.).

Надеюсь, что это указывает вам в правильном направлении, по крайней мере!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.