systemctl กำหนดเวลาการปิดระบบอย่างไร


12

เมื่อฉันพิมพ์shutdown -h +30Linux จะกำหนดการเปลี่ยนแปลงของระดับภายใน 30 นาที ใน Debian, คือการเชื่อมโยงสัญลักษณ์/sbin/shutdown /bin/systemctlการทดสอบของฉันแสดงให้เห็นว่าshutdownไม่ได้ใช้ค่าcronมิได้จับเวลา systemd

การปิดระบบใช้งานได้systemdอย่างไร

คำตอบ:


11

คำถามที่ดี. ฉันลองสิ่งที่ฉันรู้ว่าตอนนี้คุณต้องลอง - ตั้งเวลาปิดเครื่องและสอบถาม 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);

( systemctl.c บรรทัด 7387 )

logindดังนั้นก็จะปรากฏว่าการปิดรับการจัดการโดย login-dbus.cคุณยังคงสามารถติดตามรายละเอียดอย่างเช่นถ้าคุณดู มีวิธีการสำหรับการตั้งเวลาการยกเลิกการจัดการการปิดระบบ แต่เพื่อความเข้าใจที่ลึกซึ้งยิ่งขึ้นคุณอาจต้องรู้เพิ่มเติมเกี่ยวกับ logind / systemd มากกว่าที่ฉันทำ

เรื่องสั้นสั้นข้อมูลการปิดจะถูกเก็บไว้ (อย่างน้อย) ในไฟล์กำหนดเวลาที่/run/systemd/shutdown/scheduledเนื้อหาของฉันเป็นตัวอย่าง:

USEC=1435715559055789
WARN_WALL=1
MODE=poweroff

แสดงเวลา (เป็นไมโครวินาที, สมมุติ); ไม่ว่าจะเป็นการเตือนผ่านwallและโหมดใด (cf รีสตาร์ท kexec ฯลฯ )

หวังว่านี่จะชี้คุณในทิศทางที่ถูกต้องอย่างน้อย!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.