next up previous contents Next: Liste des signaux courants. Up: Processus et variables d'environnement. Previous: Création de processus en   Table des matières  


10.5 Tuer un processus avec kill. Envoyer des signaux.

Pour terminer un processus, utilisez la commande kill: [NdT: pour déterminer le PID, il faut utiliser la commande top (voir la section 10.8).]

kill <PID>


Cette commande kill envoie en réalité un signal de terminaison au processus <PID>. L'envoi d'un signal veut simplement dire que le processus doit exécuter une des 30 fonctions prédéfinies. Onze d'entre elles -les plus communes- sont décrites dans la section 10.6. Dans certains cas, les développeurs ne se sont pas préoccupés de définir une fonction (appelée catching) pour un numéro de signal particulier. Dans ce cas, le noyau utilise le comportement par défaut pour ce signal. Le comportement par défaut est usuellement d'ignorer le signal, d'arrêter le processus ou de le terminer. Le comportement par défaut pour la terminaison d'un signal est de faire disparaître le processus.

Pour envoyer un signal spécial à un processus, vous pouvez citer le nom du signal en argument à la ligne de commande ou utiliser son équivalent numérique:

kill -SIGTERM 12345 


ou bien:

kill -15 12345 


qui est le signal que kill envoie normalement quand aucun signal particulier n'est déclaré en option. [NdT: Pour suspendre un processus, il est possible d'utiliser kill -19 <PID>, et pour le relancer kill -18 <PID>.]

Pour terminer un processus de manière inconditionnelle:

kill -SIGKILL 12345 


ou

kill -9 12345 


qui ne devrait être utilisé qu'en dernier recours. Il est interdit aux processus de traiter le signal SIGKILL.

Etant donné qu'il est ennuyeux de devoir rechercher régulièrement le PID d'un processus, les utilitaires GNU présentent une commande, killall, qui envoie un signal à tous les processus de même nom:

killall -<signal> <nom_de_processus>


Cette commande est utile quand vous êtes sûr qu'il n'y a qu'un seul processus en cours, soit parce que personne d'autre n'est connecté, soit que vous n'agissez pas comme super-utilisateur. Notez que sur d'autres systèmes UNIX, la commande killall tue tous les processus que vous êtes autorisés à tuer. Si vous agissez comme super-utilisateur, cette action plantera la machine.


next up previous contents Next: Liste des signaux courants. Up: Processus et variables d'environnement. Previous: Création de processus en   Table des matières  
1-01-2006