Ante todo; "matar -9" debería ser el último recurso.
Puedes usar el kill
comando para enviar diferentes señales a un proceso. La señal predeterminada enviada por kill
es 15 (llamado SIGTERM). Los procesos generalmente captan esta señal, la limpian y luego salen. Cuando envías la señal SIGKILL (-9
) un proceso no tiene más remedio que salir inmediatamente. Esto puede causar archivos corruptos y dejar archivos de estado y sockets abiertos que pueden causar problemas al reiniciar el proceso. El -9
la señal no puede ser ignorada por un proceso.
Así es como yo lo haría:
#!/bin/bash
# Getting the PID of the process
PID=`pgrep gld_http`
# Number of seconds to wait before using "kill -9"
WAIT_SECONDS=10
# Counter to keep count of how many seconds have passed
count=0
while kill $PID > /dev/null
do
# Wait for one second
sleep 1
# Increment the second counter
((count++))
# Has the process been killed? If so, exit the loop.
if ! ps -p $PID > /dev/null ; then
break
fi
# Have we exceeded $WAIT_SECONDS? If so, kill the process with "kill -9"
# and exit the loop
if [ $count -gt $WAIT_SECONDS ]; then
kill -9 $PID
break
fi
done
echo "Process has been killed after $count seconds."
pidof gld_http
debería funcionar si está instalado en su sistema.
man pidof
dice:
Pidof finds the process id’s (pids) of the named programs. It prints those id’s on the standard output.
EDITAR:
Para su aplicación puede usar command substitution
:
kill -9 $(pidof gld_http)
Como mencionó @arnefm, kill -9
debe utilizarse como último recurso.