Différentes commandes sont utilisées pour envoyer des signaux aux processus afin de les terminer ou de les « tuer ». Cela est nécessaire lorsqu'un processus ne répond plus (se bloque), provoque une instabilité du système ou ne parvient pas à abandonner le contrôle d'un fichier que vous essayez de modifier.
Utiliser le numéro pid pour terminer les processus
Vous pouvez utiliser la commande kill avec la table de processus pour terminer les processus. En entrant kill suivi du PID, vous pouvez mettre fin à des processus spécifiques. Cependant, la table des processus peut afficher des processus qui ne vous appartiennent pas. En tant qu'utilisateur, vous ne pouvez utiliser la commande kill qu'avec les processus que vous possédez. En tant que root, vous pouvez tuer n'importe quel processus.
Signaux de mise à mort
Il existe de nombreuses façons de tuer un processus, chacune mappée à un signal. Ce signal détermine comment tuer le processus. Certains signaux sont plus appropriés que d'autres dans certaines situations. Par exemple, vous souhaiterez peut-être terminer un processus proprement, en lui laissant le temps de nettoyer les dernières activités. Cependant, certains processus ignoreront ce signal ou ne parviendront tout simplement pas à se terminer dans un délai raisonnable. Pour cela, vous devrez peut-être émettre un signal plus agressif.
Il existe de nombreux signaux de destruction différents. Chaque signal a un nom et une ou plusieurs valeurs numériques correspondantes ; vous pouvez utiliser l'un ou l'autre avec la commande kill. Certains des signaux les plus courants sont décrits ci-dessous :
1. SIGINT (2)
– Interrompt le processus depuis le terminal.
– Peut être détecté ou ignoré.
– Identique à appuyer sur Ctrl+C
2. SIGKILL (9)
– Tue le processus immédiatement.
– Ne peut pas être attrapé ou ignoré.
– Dernier recours.
3. SIGTERM (15)
– Termine le processus.
– Peut être intercepté ou ignoré.
– Envoyé depuis le programme et non depuis le terminal.
4. SIGSTOP (17, 19, 23)
– Processus de pause.
– Ne peut pas être détecté ou ignoré.
– Envoyé depuis le programme et non depuis le terminal.
5. SIGSTP (18, 20, 24)
– Interrompt le processus à partir du terminal.
– Peut être intercepté ou ignoré.
– Identique à appuyer sur Ctrl+Z.
Démo des signaux de mise à mort
Voici quelques exemples d'implémentation de signaux d'arrêt. Pour terminer un processus avec l'ID 921 de manière appropriée :
$ kill 15 921
A défaut, pour tuer le processus immédiatement :
$ kill 9 921
Alternativement, pour mettre en pause plutôt que de supprimer complètement le processus :
$ kill 17 921
exemples de commande kill
1. Pour obtenir la liste des signaux :
# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE 9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG 17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD 21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGINFO 30) SIGUSR1 31) SIGUSR2
2. Pour envoyer un signal particulier :
# kill -s 9
3. Pour spécifier la liste des processus à tuer :
# kill 1234 2345 3456
4. Terminez un programme en utilisant le signal SIGTERM (terminer) par défaut :
# kill process_id
5. Terminez une tâche en arrière-plan :
# kill %job_id
6. Terminez un programme en utilisant le signal SIGHUP (raccrocher). De nombreux démons se rechargeront au lieu de se terminer :
# kill -1|HUP process_id
7. Terminez un programme en utilisant le signal SIGINT (interruption). Ceci est généralement lancé par l'utilisateur en appuyant sur `Ctrl + C` :
# kill -2|INT process_id
8. Signalez au système d'exploitation de terminer immédiatement un programme (qui n'a aucune chance de capturer le signal) :
# kill -9|KILL process_id
9. Signalez au système d'exploitation de suspendre un programme jusqu'à ce qu'un signal SIGCONT ("continuer") soit reçu :
# kill -17|STOP process_id
10. Envoyez un signal `SIGUSR1` à tous les processus avec le GID (identifiant de groupe) donné :
# kill -SIGUSR1 -group_id