Primeiro de tudo; "kill -9" deve ser o último recurso.
Você pode usar o comando kill
para enviar sinais diferentes para um processo. O sinal padrão enviado por kill
é 15 (chamado SIGTERM). Os processos geralmente captam esse sinal, limpam e depois saem. Quando você envia o sinal SIGKILL ( -9
), um processo não tem escolha a não ser sair imediatamente. Isso pode causar arquivos corrompidos e deixar arquivos de estado e abrir soquetes que podem causar problemas quando você reiniciar o processo. O sinal -9
não pode ser ignorado por um processo.
É assim que eu faria:
#!/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."
Espero que isso ajude!