Systemctl sistemi kapatmayı nasıl planlıyor?


Yanıtlar:


11

İyi soru. Şimdi bir kapatma zamanlama ve systemd zamanlayıcıları sorgulamak-denedim olması gerektiğini fark ne denedim!

Bu, belirttiğiniz gibi kapatma işleminin sistemd zamanlayıcılarında olmadığını gösterdi. O zaman systemctl kaynağının hızlı bir şekilde incelenmesi bize şu çağrıyı verir 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 satır 7387 )

Yani, kapanmaların üstesinden geldiği anlaşılıyor logind. İsterseniz ayrıntıları takip etmeye devam edebilirsiniz login-dbus.c. Kapatmaları planlamak, iptal etmek ve yönetmek için yöntemler vardır. Ancak daha derin bir anlayış için logind / systemd hakkında benden daha fazla bilgi sahibi olmanız gerekebilir.

Uzun lafın kısası, kapatma bilgisi (en azından) bir zamanlama dosyasında saklanır /run/systemd/shutdown/scheduled, örnek olarak benim içeriğim şunlardı:

USEC=1435715559055789
WARN_WALL=1
MODE=poweroff

Zamanı belirten (mikrosaniye cinsinden, muhtemelen); uyarılması gerekip gerekmediği wallve hangi modda (cf yeniden başlatma, kexec vb.).

Umarım bu sizi en azından doğru yönde gösterir!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.