Tout d'abord; "kill -9" devrait être un dernier recours.
Vous pouvez utiliser le kill
commande pour envoyer différents signaux à un processus. Le signal par défaut envoyé par kill
est 15 (appelé SIGTERM). Les processus captent généralement ce signal, nettoient puis se terminent. Lorsque vous envoyez le signal SIGKILL (-9
) un processus n'a d'autre choix que de se terminer immédiatement. Cela peut entraîner des fichiers corrompus et laisser des fichiers d'état et des sockets ouverts qui pourraient causer des problèmes lorsque vous redémarrez le processus. Le -9
le signal ne peut pas être ignoré par un processus.
Voici comment je procéderais :
#!/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
devrait fonctionner s'il est installé sur votre système.
man pidof
dit :
Pidof finds the process id’s (pids) of the named programs. It prints those id’s on the standard output.
MODIFIER :
Pour votre application, vous pouvez utiliser command substitution
:
kill -9 $(pidof gld_http)
Comme @arnefm l'a mentionné, kill -9
doit être utilisé en dernier recours.