I have a python script where I call a lengthy process from the operating system. After a long while, the process that I call gets terminated by the system by SIGKILL signal.
Is it possible to handle this from inside Python like in a try and catch situation?
What method should I use to solve this issue. It is very important that this process keeps on running as long as possible without any interruptions.
There is no way to handle SIGKILL
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
If you're looking to handle system shutdown gracefully, you should be handling SIGTERM
or a startup/shutdown script such as an upstart job or a init.d script.
The answer is NO, you can't handle SIGKILL
or kill -9 <pid>
in any process. Only SIGHUP
can be handled by shutdownhooks but not SIGKILL
or -9
. SIGKILL
is made for aggressive killing the task and only works on kernel level; your process is unaware about the killing.
For keeping long running process you should write a small monitor program which keeps on checking whether the process is alive; if it is found to be killed, just restart the process.
OR
Run your process in below loop , hope you got it ;)
while true
do
/your/script
sleep 1
done