如何在python中处理os.system sigkill信号?

时间:2015-10-20 17:05:07

标签: python linux signals system

我有一个python脚本,我从操作系统调用一个冗长的进程。很长一段时间后,我调用的进程被SIGKILL信号系统终止。

是否有可能在Python内部处理这种情况,例如在try和catch情况下?

我应该使用什么方法来解决这个问题。非常重要的是,此过程应尽可能长时间地保持运行而不会出现任何中断。

2 个答案:

答案 0 :(得分:11)

There is no way to handle SIGKILL

  

无法捕获,阻止或忽略信号SIGKILL和SIGSTOP。

如果您希望正常处理系统关闭,则应该处理SIGTERM或启动/关闭脚本,例如upstart jobinit.d script

答案 1 :(得分:8)

答案是,您无法在任何流程中处理SIGKILLkill -9 <pid>。 shutdownhooks只能处理SIGHUP,但不能SIGKILL-9SIGKILL用于攻击性地执行任务,仅适用于内核级别;你的过程不知道杀戮。

为了保持长时间运行的过程,你应该编写一个小的监控程序,继续检查进程是否存活;如果发现它被杀死,只需重新启动该过程。

在下面的循环中运行你的过程,希望你得到它;)

while true
   do
    /your/script
   sleep 1
done