Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测挂起的linux关闭_Linux_Shutdown_System Shutdown - Fatal编程技术网

检测挂起的linux关闭

检测挂起的linux关闭,linux,shutdown,system-shutdown,Linux,Shutdown,System Shutdown,因为我会尽快为我的Ubuntu服务器安装挂起的更新,所以我必须经常重启我的linux服务器。我正在该服务器上运行一个webapp,希望警告我的用户暂停重启。现在,我手动执行此操作,在重新启动之前添加公告,给他们一些时间完成工作,重新启动并删除公告 我希望,shutdown-r+60写入一个文件,其中包含有关重启的所有信息,我可以在每次访问时检查这些信息。有这样的档案吗?出于性能原因,您更喜欢使用虚拟文件系统(如/proc)中的文件 我正在运行Ubuntu10.04.2 LTS您可以编写一个守护进

因为我会尽快为我的Ubuntu服务器安装挂起的更新,所以我必须经常重启我的linux服务器。我正在该服务器上运行一个webapp,希望警告我的用户暂停重启。现在,我手动执行此操作,在重新启动之前添加公告,给他们一些时间完成工作,重新启动并删除公告

我希望,
shutdown-r+60
写入一个文件,其中包含有关重启的所有信息,我可以在每次访问时检查这些信息。有这样的档案吗?出于性能原因,您更喜欢使用虚拟文件系统(如/proc)中的文件


我正在运行Ubuntu10.04.2 LTS

您可以编写一个守护进程,当它捕获到SIGINT/SIGQUIT信号时执行公告。

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

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

脚本示例:

shutdown.bsh
touch /somefolder/somefile
shutdown -r $1
然后在web应用程序中检查“somefile”


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

您只需检查是否正在运行关闭过程:

如果ps-C关机>/dev/null;然后
echo“关机挂起”
其他的
echo“未计划关机”
fi

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

cat /run/systemd/shutdown/scheduled

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

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

关机的工作方式已经改变

试用: -Debian Stretch 9.6 -Ubuntu 18.04.1 LTS

参考资料


如果系统已经关闭,则会调用这样的执事。但是shutdown允许我延迟关机,在这个延迟中,我想警告我的用户,因为性能原因,你不需要虚拟文件系统。那完全是个假的理由。在web应用程序中,每次请求都从光盘上读取一个真实的文件不是问题——PHP web应用程序通常已经在每个请求上读取了数百个文件。从这里我可以看出,
/run/systemd/shutdown/scheduled
在Debian jessie、stretch and buster中重新启动时仍然存在。因此,我认为这是一种更好、更简单的方法。@anarcat确实仍然存在
/run/systemd/shutdown/scheduled
。Hovewer,当您取消关机时,
/run/systemd/shutdown/scheduled
仍将显示它是scheduled,听起来像是个bug。我确认这在Debian jessie、stretch和buster中有效,当然,在systemd中运行时。我想您可以在
ps
输出中找到
shutdown
进程,即使它实际上正在运行且未计划运行。。。顺便说一句,我喜欢这个想法。在现代系统(systemd?)上,可以在没有等待关机过程的情况下安排关机。