Pascal BEAUSSART

kill


La commande kill permet d'envoyer un signal à un job spécifique. Si le signal n'est pas traité par ce job, celui-ci est détruit.
kill -l liste l'ensemble des signaux possibles et leur numéros Si vous ne précisez pas de signal, c'est le signal TERM (15) qui est envoyé par défaut.

function msg {
 trap 'echo suite' USR1
 while (( 1 ))
 do :
 done
}
msg &               # lancement du processus en background
jobs -l
[1] + 6360            Running
kill -USR1 %1
suite
kill -9 %1          # arrêt du processus background

Nota : %1 correspond au job numéro 1 lancé en background ; c'est l'indication entre crochets. On aurait tout aussi bien pu envoyer le signal à 6360 qui est un numéro de processus (différent à chaque fois).

Exemple de la programmation d'un "time out" de 10 secondes
TimeOut=10
( sleep $TimeOut 1>/dev/null 2>&1
  echo "\nDésolé réponse trop tradive"
  kill -9 $$
) &
TimeOutPid=$!
read reponse?"Vous avez $TimeOut s pour réponse : "
kill -9 $TimeOutPid
echo "j'ai reçu la réponse à temps"
Si vous avez donné une réponse dans les 10 secondes vous obtenez le message :
j'ai reçu la réponse à temps
Sinon :
Désolé réponse trop tradive
Killed


[RETOUR] [HOME]