9

由于我会尽快为我的 Ubuntu 服务器安装挂起的更新,因此我必须经常重启我的 linux 服务器。我正在该服务器上运行一个 web 应用程序,并想警告我的用户有关挂起的重新启动。现在,我手动执行此操作,在重新启动之前添加公告,给他们一些时间来完成他们的工作,重新启动并删除公告。

我希望,shutdown -r +60写一个包含有关重启的所有信息的文件,我可以检查每次访问。有这样的文件吗?出于性能原因,更喜欢 /proc 之类的虚拟文件系统中的文件...

我正在运行 Ubuntu 10.04.2 LTS

4

5 回答 5

22

如果您使用的是 systemd,以下命令会显示计划的关闭信息。

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
于 2018-07-11T15:37:32.980 回答
4

我能想到的最简单的解决方案是编写一个脚本来包装关闭命令,并在该脚本中创建一个您的 Web 应用程序可以检查的文件。

据我所知,shutdown 不会将文件写入底层文件系统,尽管它确实会触发关闭的广播消息警告,我想您可以编写一个程序来拦截.. 但上述解决方案似乎是最简单的。

脚本示例:

shutdown.bsh
touch /somefolder/somefile
shutdown -r $1

然后在您的网络应用程序中检查“somefile”。

您需要添加一个删除“somefile”的启动链接,否则当系统启动时它仍然存在并且网络应用程序将始终告诉您的用户它即将关闭。

于 2011-02-19T12:39:52.157 回答
3

您可以简单地检查正在运行的关闭过程:

if ps -C shutdown > /dev/null; then
  echo "Shutdown is pending"
else
  echo "Shutdown is not scheduled"
fi
于 2014-06-05T06:43:09.153 回答
1

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

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

关机的工作方式已经改变

试用: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

参考

于 2018-12-28T08:06:20.197 回答
0

您可以编写一个守护程序,当它捕获到SIGINT / SIGQUIT信号时发出通知。

于 2011-02-19T12:37:27.213 回答