2016-03-09 68 views
0

我有一个python脚本发送一个SIGHUP信号给另一个进程,与我的脚本(不是一个孩子,不可改变)无关。当进程收到SIGHUP时,它会启动“轻重启”,重新加载配置文件和更新信息。 “重新启动”不会停止进程,所以我不能等待退出代码。我知道我可以查看进程日志文件以了解是否处理了该信号,但对于脚本流程而言,这太重且太慢。如何知道SIGHUP信号是否已被处理?

我想知道是否可以使用另一种方法警告我的过程已收到SIGHUP?

+0

通过_reloading配置文件_,你的意思只是一个读取访问?因为解决方案是使用'lsof' Linux命令来检测访问。我正在研究如何实施此解决方案。 –

+0

@DGeTuX这是真的,我的目标进程将读取配置文件。我没有想到这一点。这种方式确实可以帮助我很多。谢谢。 – Harrygiel

回答

0

这个inotify-tools C库可以解决你的问题。它的安装使您可以访问新的命令:inotifywaitinotifywatch

比方说你有这个/tmp/foo.bar文件。你可以开始观看有关该文件的任何读取访问使用下面的命令:

inotifywait --event access /tmp/foo.bar 

然后,做一个cat /tmp/foo.bar,程序将返回。

正如我所说,这是一个C库,我猜还有其他语言实现它。因此,请不要使用这个Bash示例,并使用此库为您编写自己的程序。

+0

这个解决方案似乎也是用'inotify'包在python中实现的。它是“Linux内核支持inotify目录监视的适配器”。 与解析某些日志文件相比,此方法看起来更快,CPU占用也更少,其中可能会更改目标进程的未来更新中需要的行。非常感谢,我将使用此解决方案。 – Harrygiel

相关问题