我有一个python脚本,我从操作系统调用一个冗长的进程。很长一段时间后,我调用的进程被SIGKILL信号系统终止。
是否有可能在Python内部处理这种情况,例如在try和catch情况下?
我应该使用什么方法来解决这个问题。非常重要的是,此过程应尽可能长时间地保持运行而不会出现任何中断。
答案 0 :(得分:11)
There is no way to handle SIGKILL
无法捕获,阻止或忽略信号SIGKILL和SIGSTOP。
如果您希望正常处理系统关闭,则应该处理SIGTERM
或启动/关闭脚本,例如upstart job或init.d script。
答案 1 :(得分:8)
答案是否,您无法在任何流程中处理SIGKILL
或kill -9 <pid>
。 shutdownhooks只能处理SIGHUP
,但不能SIGKILL
或-9
。 SIGKILL
用于攻击性地执行任务,仅适用于内核级别;你的过程不知道杀戮。
为了保持长时间运行的过程,你应该编写一个小的监控程序,继续检查进程是否存活;如果发现它被杀死,只需重新启动该过程。
或强>
在下面的循环中运行你的过程,希望你得到它;)
while true
do
/your/script
sleep 1
done