अच्छा प्रश्न। मैंने कोशिश की कि मुझे अब एहसास हुआ कि आपने कोशिश की होगी- शटडाउन शेड्यूल करना और सिस्टम टाइमर को क्वेरी करना!
इससे पता चला है कि शटडाउन सिस्टम टाइमर्स में नहीं था, जैसा कि आपने नोट किया। तो फिर 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
। शेड्यूलिंग, रद्द करने, प्रबंधन को बंद करने के तरीके हैं। लेकिन गहरी समझ के लिए, आपको लॉगइंड / सिस्टमड के बारे में अधिक जानने की आवश्यकता हो सकती है।
लंबी कहानी छोटी, शटडाउन जानकारी को एक अनुसूची फ़ाइल में (कम से कम) संग्रहीत किया /run/systemd/shutdown/scheduled
जाता है, उदाहरण के तौर पर मेरी सामग्री:
USEC=1435715559055789
WARN_WALL=1
MODE=poweroff
संकेत समय (microseconds में, संभवतः); के माध्यम से चेतावनी देने के लिए कि क्या है wall
, और जो मोड (सीएफ पुनः आरंभ, kexec आदि)।
आशा है कि यह आपको कम से कम सही दिशा में इंगित करता है!