systemd: Làm thế nào để kiểm tra thời gian dự kiến ​​của việc tắt máy bị trì hoãn?


14

Tôi thích sử dụng shutdown -h TIME/+DELAYđôi khi. Tuy nhiên, kể từ khi chuyển sang systemd (trên Ubuntu), mọi thứ dường như đã thay đổi khá nhiều.

Ngoài thực tế là lệnh tắt máy trước đó không còn ngăn được việc chạy lệnh mới, tôi không thể tìm ra cách kiểm tra thời gian tắt máy theo kế hoạch của quy trình tắt máy hiện tại.

Tôi đã từng chạy ps aux | grep shutdownđể xem thời gian tắt máy theo kế hoạch.

Bây giờ với systemd nó chỉ hiển thị một cái gì đó như thế này:

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

Làm thế nào tôi có thể kiểm tra thời gian tắt theo lịch trình của một quá trình như vậy?

Tôi đã thử shutdown -k, nhưng thay vì chỉ viết một tin nhắn trên tường, nó dường như cũng thay đổi thời gian tắt máy theo lịch trình thành bây giờ + 1 phút.

Câu trả lời:


12

người đàn ông tắt máy (8) nói:

Đối số đầu tiên có thể là một chuỗi thời gian (thường là "bây giờ").

Chuỗi thời gian có thể ở định dạng "hh: mm" cho giờ / phút chỉ định thời gian thực hiện tắt máy tại, được chỉ định ở định dạng đồng hồ 24h. Ngoài ra, nó có thể nằm trong cú pháp "+ m" đề cập đến số phút được chỉ định m từ bây giờ. "now" là một bí danh cho "+0", tức là để kích hoạt tắt máy ngay lập tức. Nếu không có đối số thời gian được chỉ định, "+1" được ngụ ý.

Thử:

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

Bạn sẽ thấy một cái gì đó như thế này:

● 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

StatusShutting down at Tue 2015-09-15 09:18:11 UTC (poweroff)...


Cảm ơn. Điều đó thật dễ dàng. Tôi đã thử "tình trạng dịch vụ" mà không thành công trước đó. Tôi đoán tôi chưa quen với systemd đủ.
KIAaze

3
systemd-shutdowndđã bị xóa khỏi systemd vào tháng 5 năm 2015.
JdeBP

Đúng rồi. Cảm ơn vì chỉ ra điều ấy. Nếu một phiên bản mới hơn của systemd được sử dụng, thì một cái gì đó như sau sẽ đủ : 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 là dấu thời gian unix epoch với độ chính xác micro giây, vì vậy:

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

sẽ hiển thị một cái gì đó như:

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

Phiên bản Systemd232-25 + deb9u4 chạy trên Debian Stretch.


5

Đối với các phiên bản phân phối linux mới hơn, bạn có thể cần phải làm:

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

Phương thức hoạt động của tắt máy đã thay đổi

Đã thử trên: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

Người giới thiệu


2
Đầu ra chỉ định thời gian tắt là micro giây kể từ thời kỳ Unix. Để có được thời gian có thể đọc được của con người:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_success

4

Tôi gặp phải câu hỏi tương tự và tìm một cách khác để kiểm tra kế hoạch tắt máy.

Khi bạn đặt kế hoạch tắt máy, tường sẽ gửi tin nhắn cho mọi người đăng nhập với quyền mesg của họ được đặt thành có. Đối với mỗi lần gọi tường, một thông báo sẽ được viết vào syslog . Để tìm kiếm nhật ký hệ thống , bạn có thể chạy lệnh journalctl -u systemd-shutdownd, -utùy chọn có thể lọc nhật ký theo đơn vị.

Khi bạn chạy journalctl -u systemd-shutdownd, nó sẽ hiển thị các chi tiết tắt máy như bên dưới:

[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

Trên máy Ubuntu 18.04, tắt máy được quản lý bởi systemd. Trên máy của tôi, tôi đã kích hoạt tự động khởi động lại thông qua các nâng cấp không giám sát:

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

Thời gian khởi động lại tự động theo lịch trình được lưu trữ trong /run/systemd/shutdown/scheduled.

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

Bạn có thể chuyển đổi thời gian này thành thời gian có thể đọc được bằng cách sử dụng lệnh sau:

$ date -d "@$( awk -F '=' '/USEC/{ $2=substr($2,1,10); print $2 }' /run/systemd/shutdown/scheduled )"
Thu Jul 25 02:00:00 NZST 2019
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.