คำตอบ:
คำถามที่ดี. ฉันลองสิ่งที่ฉันรู้ว่าตอนนี้คุณต้องลอง - ตั้งเวลาปิดเครื่องและสอบถาม systemd timers!
นั่นแสดงให้เห็นว่าการปิดระบบไม่ได้อยู่ในตัวนับ systemd ตามที่คุณบันทึกไว้ ดังนั้นการตรวจสอบอย่างรวดเร็วของแหล่งที่มาของ 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);
logind
ดังนั้นก็จะปรากฏว่าการปิดรับการจัดการโดย login-dbus.c
คุณยังคงสามารถติดตามรายละเอียดอย่างเช่นถ้าคุณดู มีวิธีการสำหรับการตั้งเวลาการยกเลิกการจัดการการปิดระบบ แต่เพื่อความเข้าใจที่ลึกซึ้งยิ่งขึ้นคุณอาจต้องรู้เพิ่มเติมเกี่ยวกับ logind / systemd มากกว่าที่ฉันทำ
เรื่องสั้นสั้นข้อมูลการปิดจะถูกเก็บไว้ (อย่างน้อย) ในไฟล์กำหนดเวลาที่/run/systemd/shutdown/scheduled
เนื้อหาของฉันเป็นตัวอย่าง:
USEC=1435715559055789
WARN_WALL=1
MODE=poweroff
แสดงเวลา (เป็นไมโครวินาที, สมมุติ); ไม่ว่าจะเป็นการเตือนผ่านwall
และโหมดใด (cf รีสตาร์ท kexec ฯลฯ )
หวังว่านี่จะชี้คุณในทิศทางที่ถูกต้องอย่างน้อย!