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分钟。

Answers:


12

man shutdown(8)说:

第一个参数可以是时间字符串(通常为“现在”)。

时间字符串的格式可以是“ hh:mm”,以小时/分钟为单位,以24小时时钟格式指定执行关闭的时间。或者,它可以采用语法“ + m”,指的是从现在起指定的分钟数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

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


谢谢。那很简单。我尝试过“服务状态”,但没有成功。我想我还不太习惯系统化。
KIAaze

4
systemd-shutdownd已于2015
。– JdeBP '18

没错 感谢您指出。如果使用较新版本的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是具有毫秒级精度的Unix纪元时间戳,因此:

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

系统版本是在Debian Stretch上运行的232-25 + deb9u4


5

对于较新的Linux发行版,您可能需要执行以下操作:

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时代以来的关闭时间指定为微秒。要获得人类可读的时间:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_success'Jan

4

我遇到了同样的问题,并找到了另一种检查关机计划的方法。

当您设置关闭计划时,wall将向登录信息的所有人发送消息,他们的信息权限设置为yes。对于wall的每次调用,都会将通知写入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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.