Як планується вимкнення системи 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 перезапуск, kexec тощо).

Сподіваємось, це принаймні направить вас у правильному напрямку!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.