由于我尽快安装待处理更新,我的Ubuntu服务器经常需要重新启动。我在该服务器上运行一个Web应用程序,并希望警告我的用户有待处理的重启。目前,我手动添加通知以在重启之前提醒他们有时间完成工作,然后重启并删除通知。
我希望shutdown -r +60
会编写一个包含有关重启的所有信息的文件,我可以在每次访问时检查它。是否存在这样的文件?出于性能原因,希望是虚拟文件系统中的文件,例如/proc...
我正在运行Ubuntu 10.04.2 LTS。
由于我尽快安装待处理更新,我的Ubuntu服务器经常需要重新启动。我在该服务器上运行一个Web应用程序,并希望警告我的用户有待处理的重启。目前,我手动添加通知以在重启之前提醒他们有时间完成工作,然后重启并删除通知。
我希望shutdown -r +60
会编写一个包含有关重启的所有信息的文件,我可以在每次访问时检查它。是否存在这样的文件?出于性能原因,希望是虚拟文件系统中的文件,例如/proc...
我正在运行Ubuntu 10.04.2 LTS。
cat /run/systemd/shutdown/scheduled
输出示例:
USEC=1636410600000000
WARN_WALL=1
MODE=reboot
正如@Björn在评论中提到的,USEC
是以微秒为单位的时间戳。
您可以通过删除最后6个数字并使用date
将其转换为人类友好格式,例如:
$ date -d @1636410600
Mon Nov 8 23:30:00 CET 2021
shutdown.bsh
touch /somefolder/somefile
shutdown -r $1
然后在您的 Web 应用程序中检查 'somefile'。
您需要添加一个启动链接来擦除 'somefile',否则当系统启动并且 Web 应用程序始终告诉用户它即将关闭时,该文件仍将存在。
if ps -C shutdown > /dev/null; then
echo "Shutdown is pending"
else
echo "Shutdown is not scheduled"
fi
对于较新的Linux发行版,您可能需要执行以下操作:
busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown
关机工作方式已更改
尝试过: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS
参考资料
/run/systemd/shutdown/scheduled
仍然存在。因此,我认为这是一种更好、更简单的方法。 - anarcat/run/systemd/shutdown/scheduled
仍然存在。但是,当您取消关机时,/run/systemd/shutdown/scheduled
仍将显示已计划的关机。 - akarapatis你可以编写一个守护进程,在捕获SIGINT / SIGQUIT信号时进行通告。