La commande kill est utilisée dans les systèmes d’exploitation de type Unix, comme Linux, pour envoyer des signaux à des processus. Chaque signal peut provoquer une réponse différente dans le processus ciblé, mais en général, kill est utilisé pour arrêter des processus.

Voici un aperçu des composants de base et de la fonctionnalité de la commande kill :

Utilisation de base

La commande de base est

kill [options] <PID>

<PID> est l’identifiant du processus à signaler.

Sans options, kill envoie SIGTERM (signal numéro 15), qui demande au processus de se terminer proprement, en fermant les fichiers et en libérant les ressources.

Comment trouver le PID d’un processus ?

Le PID, ou « Process IDentifier », est un nombre unique attribué par le système d’exploitation à chaque processus lors de sa création. Ce numéro permet au système d’exploitation et à l’utilisateur de distinguer chaque processus en cours d’exécution sur le système.

Pour afficher les PIDs sur un système Linux, vous pouvez utiliser plusieurs commandes, les plus courantes étant ps, top, htop (une version améliorée de top qui doit être installée séparément), et pgrep.

  1. Commande ps:
    • Tapez ps aux pour afficher un instantané de tous les processus en cours d’exécution. La colonne PID affiche le numéro d’identification de chaque processus.
    • Pour un processus spécifique, par exemple firefox, vous pouvez utiliser ps aux | grep firefox.
  2. Commande top:
    • Tapez top pour afficher une vue dynamique de tous les processus en cours d’exécution. Les PIDs sont listés dans une colonne sur la gauche.
    • Vous pouvez également utiliser htop pour une vue plus interactive et colorée.
  3. Commande pgrep:
    • Tapez pgrep nom_du_processus pour afficher le PID d’un processus par son nom. Par exemple, pgrep firefox affichera le PID de toutes les instances de Firefox en cours d’exécution.
  4. Affichage détaillé:
    • Si vous souhaitez plus de détails sur un processus spécifique une fois que vous avez son PID, vous pouvez utiliser ps -p PID -o comm=, ce qui affichera le nom de la commande qui a démarré le processus.

Le PID est important car il est utilisé pour gérer des processus spécifiques, par exemple pour envoyer des signaux avec des commandes comme kill, nice ou renice.

Signaux

Les signaux sont des messages envoyés à un processus pour déclencher une action prédéfinie. Les signaux peuvent être envoyés par le système d’exploitation, par d’autres processus ou par des utilisateurs.

Par exemple, le signal SIGTERM demande à un processus de se terminer proprement, tandis que SIGKILL ordonne à un processus de s’arrêter immédiatement.

Signaux courants :

  • SIGTERM (15) : Signal de fin de processus standard. Le processus peut intercepter ce signal et le traiter comme il le souhaite (parfois en l’ignorant).
  • SIGKILL (9) : Force le processus à se terminer immédiatement. Le processus ne peut pas intercepter ce signal.
  • SIGSTOP (17, 19, 23) : Arrête (suspend) le processus sans le terminer.
  • SIGCONT (18, 20, 24) : Reprend l’exécution d’un processus arrêté.

Commandes avancées :

Pour envoyer un signal spécifique, vous utilisez

kill -s <signal> <PID>

ou

kill -<signal> <PID>. Par exemple,

kill -SIGTERM <PID> 

ou

kill -15 <PID>

Vous pouvez également envoyer un signal à plusieurs PIDs à la fois : kill -SIGTERM PID1 PID2 PID3.

Si vous voulez envoyer un signal à tous les processus exécutant un certain programme, vous pouvez utiliser pkill ou killall suivi du nom du programme.

Afficher la liste des signaux :

Vous pouvez voir la liste des signaux disponibles avec kill -l. Ceci est utile pour connaître les différents types de signaux que vous pouvez envoyer avec kill.

Permissions :

Un utilisateur peut envoyer des signaux à ses propres processus, mais seuls le superutilisateur (root) ou avec des droits élevés via sudo peut envoyer des signaux aux processus d’autres utilisateurs.

Utilisation prudente

Bien que kill soit un outil puissant, son utilisation doit être prudente, surtout avec des signaux comme SIGKILL qui ne permettent pas au processus de se terminer proprement, ce qui peut entraîner une perte de données ou un état incohérent du système.

kill est une commande flexible pour la gestion des processus qui permet aux utilisateurs de signaler des processus pour une variété d’actions, depuis une terminaison propre jusqu’à une interruption forcée.