我在c中编写了一个Linux守护进程,现在我的问题是 如果用户杀死守护进程,则必须自动重启守护进程,如何在守护进程内实现守护进程。
喜欢:: on shutdown event received>重启守护进程
示例场景
守护进程是长寿的。通常,会在系统启动时创建守护程序 并运行直到系统关闭,让我们说:例如:一个守护进程 叫XXX,做一些重要的例程,比如观看的功能 特定的日志文件,如果找到则以高安全性警告管理员 应用程序,如果此守护程序被杀死,则需要重新启动 自动
答案 0 :(得分:1)
如果用户使用kill
通过pid关闭守护程序,则无法从守护程序内部执行任何操作来重新启动它。 (因为大多数用户在某处读到你需要总是使用kill -9
这几乎在所有情况下都是一个非常糟糕的主意,但他们仍然这样做)
如果你可以保证你的用户没有使用kill -9
(你不能),那么你可以设置一个信号处理程序来干净地退出并重新启动守护进程。
否则,最好的办法是让守护程序在死亡或被杀死时重启守护进程。查看daemontools或只使用简单的shell脚本:
while true; do
daemon
sleep 1
done
答案 1 :(得分:1)
这是一个错误的问题。看门狗重启(这是你要问的)是一种容错技术。您不使用容错来纠正人机操作员的故意和故意决策。如果您不希望用户终止您的进程,请告诉他们不要。如果他们忽视它,那么他们就破坏了他们的系统。标准系统守护进程通常不会重生,你为什么要这样做?
答案 2 :(得分:0)
我在想是否cron可以成为验证守护程序活动的好/安全的想法。
例如:
每隔30分钟启动一个脚本来测试守护程序是否处于活动状态。
$ */30 * * * * <script to verify daemon activity>
脚本(伪代码):
if daemon is active
then
:
else
restart daemon
fi