Bagaimana systemctl menjadwalkan shutdown sistem?

12

Ketika saya mengetik shutdown -h +30, Linux entah bagaimana menjadwalkan perubahan runlevel dalam waktu 30 menit. Di Debian, /sbin/shutdowntautan simbolis ke /bin/systemctl. Tes saya menunjukkan bahwa shutdowntidak tidak menggunakan tidak cron atau systemd timer .

Bagaimana sistem shutdown diterapkan systemd?

patryk.beza
sumber

Jawaban:

11

Pertanyaan bagus. Saya mencoba apa yang saya sadari sekarang Anda pasti sudah mencoba - menjadwalkan shutdown dan menanyakan timer systemd!

Itu menunjukkan bahwa shutdown tidak di timer systemd, seperti yang Anda catat. Jadi dengan cepat membaca sumber systemctl memberi kita panggilan ini, sebagai bagian dari 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 line 7387 )

Jadi akan terlihat bahwa shutdown ditangani oleh logind. Anda dapat terus mengejar detail jika Anda suka- lihat login-dbus.c. Ada metode di sana untuk penjadwalan, pembatalan, pengelolaan shutdown. Tetapi untuk pemahaman yang lebih dalam, Anda mungkin perlu tahu lebih banyak tentang logind / systemd daripada saya.

Singkat cerita, info shutdown disimpan (setidaknya) dalam file jadwal di /run/systemd/shutdown/scheduled, konten saya sebagai contoh adalah:

USEC=1435715559055789
WARN_WALL=1
MODE=poweroff

Menunjukkan waktu (dalam mikrodetik, mungkin); apakah akan memperingatkan melalui wall, dan mode mana (cf restart, kexec dll).

Semoga ini menunjukkan Anda ke arah yang benar setidaknya!

bertieb
sumber