一尘不染

如何在Linux上检测挂起的系统关闭?

linux

我正在研究需要检测系统关闭的应用程序。但是,我没有找到任何可靠的方式来接收此事件的通知。

我知道在关机时,我的应用会收到一个SIGTERM信号,然后是SIGKILL。我想知道是否有任何方法可以查询a SIGTERM是否
为关机序列的一部分

有谁知道是否有一种以编程方式查询(C API)的方法吗?

据我所知,系统没有提供任何其他方法来查询即将发生的关机。如果确实如此,那也将解决我的问题。我也一直在尝试runlevels,但是更改runlevels似乎是瞬时的,并且没有任何事先警告。


阅读 250

收藏
2020-06-03

共1个答案

一尘不染

无法确定a SIGTERM是否为关闭序列的一部分。要检测关闭顺序,您可以使用rc.d诸如ereOn和Eric
Sepanson建议的脚本,也可以使用诸如DBus的机制。

但是,从设计的角度来看,SIGTERM即使它不是关闭的一部分,也没有必要忽略它。SIGTERM的主要目的是要 礼貌地要求
应用程序干净退出,如果拥有足够特权的人SIGTERM不希望该应用程序退出,则不太可能发出a 。

2020-06-03