systemd: วิธีการตรวจสอบเวลาตามกำหนดเวลาของการปิดระบบล่าช้า?


14

ฉันชอบที่จะใช้shutdown -h TIME/+DELAYบางครั้ง อย่างไรก็ตามเนื่องจากเปลี่ยนเป็น systemd (บน Ubuntu) สิ่งต่าง ๆ ดูเหมือนจะเปลี่ยนไปเล็กน้อย

นอกเหนือจากข้อเท็จจริงที่ว่าคำสั่งปิดเครื่องก่อนหน้านี้ไม่ได้ป้องกันการเรียกใช้คำสั่งใหม่อีกต่อไปฉันไม่สามารถหาวิธีตรวจสอบเวลาปิดเครื่องที่วางแผนไว้ของกระบวนการปิดระบบปัจจุบันได้

ฉันเคยวิ่งps aux | grep shutdownเพื่อดูเวลาปิดเครื่องที่วางแผนไว้

ขณะนี้มี systemd มันจะแสดงสิ่งนี้:

root      5863  0.0  0.0  13300  1988 ?        Ss   09:04   0:00 /lib/systemd/systemd-shutdownd

ฉันจะตรวจสอบเวลาปิดที่กำหนดไว้สำหรับกระบวนการดังกล่าวได้อย่างไร

ฉันพยายามshutdown -kแต่แทนที่จะเขียนแค่ข้อความบนผนังดูเหมือนว่าจะเปลี่ยนเวลาปิดที่กำหนดไว้เป็นตอนนี้ + 1 นาที

คำตอบ:


12

man shutdown (8)พูดว่า:

อาร์กิวเมนต์แรกอาจเป็นสตริงเวลา (ซึ่งโดยปกติจะเป็น "ตอนนี้")

สตริงเวลาอาจอยู่ในรูปแบบ "hh: mm" สำหรับชั่วโมง / นาทีที่ระบุเวลาในการปิดการทำงานที่ระบุไว้ในรูปแบบนาฬิกา 24 ชั่วโมง หรืออาจเป็นในรูปแบบ "+ m" ซึ่งหมายถึงจำนวนนาทีที่ระบุนับจากนี้ "now" เป็นนามแฝงสำหรับ "+0" เช่นสำหรับเรียกการปิดระบบทันที หากไม่มีการระบุเวลาโต้แย้ง "+1" จะบอกเป็นนัย

ลอง:

# shutdown +5
# systemctl status systemd-shutdownd.service

คุณควรเห็นสิ่งนี้:

● systemd-shutdownd.service - Delayed Shutdown Service
Loaded: loaded (/lib/systemd/system/systemd-shutdownd.service; static; vendor preset: enabled)
Active: active (running) since Tue 2015-09-15 09:13:11 UTC; 12s ago
Docs: man:systemd-shutdownd.service(8)
Main PID: 965 (systemd-shutdow)
Status: "Shutting down at Tue 2015-09-15 09:18:11 UTC (poweroff)..."
CGroup: /system.slice/systemd-shutdownd.service
       └─965 /lib/systemd/systemd-shutdownd

Status คือ Shutting down at Tue 2015-09-15 09:18:11 UTC (poweroff)...


ขอบคุณ นั่นเป็นเรื่องง่าย ฉันลอง "สถานะการบริการ" ไม่ประสบความสำเร็จมาก่อน ฉันเดาว่าฉันยังไม่คุ้นเคยกับ systemd เพียงพอ
KIAaze

4
systemd-shutdowndถูกลบออกจาก systemd ในเดือนพฤษภาคม 2558
JdeBP

ถูกต้อง. ขอบคุณสำหรับการชี้ให้เห็น ถ้าเป็นรุ่นใหม่ของ systemd USECS=$(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d ' ' -f 3); SECS=$((USECS / 1000000)); date --date=@$SECSถูกนำมาใช้แล้วบางอย่างเช่นต่อไปนี้ควรจะพอเพียง:
Evgeny Vereshchagin

9
# cat /run/systemd/shutdown/scheduled
USEC=1537242600000000
WARN_WALL=1
MODE=poweroff

USEC เป็นเวลาประทับยุคเดียวที่มีความแม่นยำระดับไมโครวินาทีดังนั้น:

if [ -f /run/systemd/shutdown/scheduled ]; then
  perl -wne 'm/^USEC=(\d+)\d{6}$/ and printf("Shutting down at: %s\n", scalar localtime $1)' < /run/systemd/shutdown/scheduled
fi

จะแสดงสิ่งที่ชอบ:

Shutting down at: Tue Sep 18 03:50:00 2018

รุ่นSystemdคือ232-25 + deb9u4ทำงานบน Debian Stretch


5

สำหรับรุ่นลินุกซ์ที่ใหม่กว่าคุณอาจต้องทำ:

busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown

วิธีการทำงานของการปิดระบบได้เปลี่ยนไป

พยายามเมื่อ: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

อ้างอิง


2
เอาต์พุตระบุเวลาปิดระบบเป็นไมโครวินาทีตั้งแต่ Unix epoch เพื่อให้ได้เวลาที่มนุษย์สามารถอ่านได้:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_success

4

ฉันพบคำถามเดียวกันและพบวิธีอื่นในการตรวจสอบแผนการปิดระบบ

เมื่อคุณตั้งแผนปิดที่ผนังจะส่งข้อความไปยังทุกคนเข้าสู่ระบบด้วย mesg การตั้งค่าสิทธิ์ของพวกเขาไปใช่ สำหรับการภาวนาของผนังทุกการแจ้งเตือนจะถูกเขียนไปsyslog เมื่อต้องการค้นหาsyslogคุณสามารถเรียกใช้คำสั่งjournalctl -u systemd-shutdowndที่-uตัวเลือกที่สามารถกรองบันทึกโดยหน่วย

เมื่อคุณเรียกใช้journalctl -u systemd-shutdowndมันจะแสดงรายละเอียดการปิดดังต่อไปนี้:

[root@dev log]# journalctl -u systemd-shutdownd
-- Logs begin at Mon 2017-06-12 09:39:34 CST, end at Mon 2017-06-12 14:05:04 CST. --
Jun 12 09:39:50 dev.local systemd[1]: Started Delayed Shutdown Service.
Jun 12 09:39:50 dev.local systemd[1]: Starting Delayed Shutdown Service...
Jun 12 09:39:50 dev.local systemd-shutdownd[1249]: Shutting down at Mon 2017-06-12 21:00:00 CST (poweroff)...
Jun 12 09:55:59 dev.local systemd-shutdownd[1249]: Shutdown canceled.
Jun 12 09:56:07 dev.local systemd[1]: Started Delayed Shutdown Service.
Jun 12 09:56:07 dev.local systemd[1]: Starting Delayed Shutdown Service...
Jun 12 09:56:07 dev.local systemd-shutdownd[2885]: Shutdown canceled.
Jun 12 11:54:15 dev.local systemd[1]: Started Delayed Shutdown Service.
Jun 12 11:54:15 dev.local systemd[1]: Starting Delayed Shutdown Service...
Jun 12 11:54:15 dev.local systemd-shutdownd[3178]: Shutting down at Mon 2017-06-12 20:00:00 CST (poweroff)...

1

บน Ubuntu 18.04 systemdปิดเครื่องมีการจัดการโดย ในเครื่องของฉันฉันได้เปิดใช้งานการรีบูตอัตโนมัติผ่านการอัปเกรดแบบไม่ต้องใส่ข้อมูล:

$ grep Automatic-Reboot /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

/run/systemd/shutdown/scheduledเวลารีบูตโดยอัตโนมัติจะถูกเก็บไว้ใน

$ cat /run/systemd/shutdown/scheduled
USEC=1563976800000000 
WARN_WALL=1
MODE=reboot

คุณสามารถแปลงเป็นเวลาที่มนุษย์สามารถอ่านได้โดยใช้คำสั่งต่อไปนี้:

$ date -d "@$( awk -F '=' '/USEC/{ $2=substr($2,1,10); print $2 }' /run/systemd/shutdown/scheduled )"
Thu Jul 25 02:00:00 NZST 2019
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.