Skip to content

Instantly share code, notes, and snippets.

@kikegarcia
Created April 20, 2016 14:42
Show Gist options
  • Save kikegarcia/0a923fe4b90d88eb20af6a29d5d29f29 to your computer and use it in GitHub Desktop.
Save kikegarcia/0a923fe4b90d88eb20af6a29d5d29f29 to your computer and use it in GitHub Desktop.
Kill process if given process name and duration is more than X minutes
#!/bin/bash
PROC_NAME="sync/cli/cron.php"
FECHA=$(date +%Y%m%d)
BASE_LOG="/CODE/logs/operaciones/unblock_sync_v2_${FECHA}.log"
# bucle con pids que coinciden con el nombre del proceso
for pid in $(ps -fe | grep $PROC_NAME | grep -v grep | awk '{print $2}'); do
# Recoge el tiempo que lleva corriendo y limpiamos de simbolo :
time=(`ps -o etime $pid | sed -e 's/[:-]/ /g'`)
# Obtiene los minutos limpios
min=${time[1]}
# Si dura más de 75 minutos, matar el proceso
if [ "$min" -gt "75" ]; then
process_info=(`cat /proc/$pid/cmdline`)
echo "[$FECHA] $process_info" >> $BASE_LOG
echo "[$FECHA] Duracion proceso con PID: $pid -> Minutos: $min" >> $BASE_LOG
kill -9 $pid
fi
done;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment