服务器恢复后守护程序的PID文件

2024-09-30 08:19:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些守护程序,它们使用PID文件来阻止程序的并行执行。我已经设置了一个信号处理程序来捕获SIGTERM并执行必要的清理,包括PID文件。当使用“sigi-kill”这个术语时,使用“sigi-kill”这个术语。但是,当我重新启动服务器时,PID文件仍然挂着,阻止守护进程的启动。据我所知,当服务器关闭时,SIGTERM会发送到所有进程。又一个信号了吗在我的守护进程中?在


Tags: 文件程序服务器信号进程pid信号处理术语
3条回答

记住,在向所有进程发送SIGTERM之后,内核会等待一段时间(通常是2到3秒),然后发送SIGKILL。您可以在/etc/rc.d/rc0.d/S01halt或类似的地方找到(可能会因您的分布而有所不同)。在

例如,我的软呢帽11上有:

action $"Sending all processes the TERM signal..." /sbin/killall5 -15
sleep 2
action $"Sending all processes the KILL signal..."  /sbin/killall5 -9

因此,如果你不够快,要么增加延迟,要么确保你更快!在

在pidfile上使用flock(或lockf),如果成功,您可以重写pidfile并继续。在

This SO answer有一个很好的例子来说明这一点。在

这不是一个直接的解决方案,但最好在启动时检查pid文件中是否有一个实际进程在运行,如果不存在,则清除过时的文件。在

您的进程有可能在有机会清理pid文件之前得到一个SIGKILL。在

相关问题 更多 >

    热门问题