Linux: autokill a crashed / infinite loop process
Sometime a process can take 100% of all available cpu power because it crashed. Here is a little script I used on a server for pdftk because this software was crashing from time to time.
Just launch the script from a cron job and replace “PROCESS_NAME” by the name of the process to watch.
- argument 1 : number of minutes after which the process will be killed
- argument 2 : number of seconds
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash # get process id and execution time process=`top -b -n 1 | grep PROCESS_NAME | awk '{print $1" "$11}'` # extract pid pid=`echo $process | awk '{print $1}'` # extract execution time time=`echo $process | awk '{print $2}' | awk -F ":" '{ min=$1; sec=$2; print 60*min+sec}'` if [ $(echo "$time > 1"|bc) -eq 1 ] ; then kill -9 $pid echo "killed process $pid that used $time of processor power" fi |