CodeGym /Cours /Docker SELF /Terminer les processus : commandes `kill`, `killall`, `pk...

Terminer les processus : commandes `kill`, `killall`, `pkill`

Docker SELF
Niveau 2 , Leçon 5
Disponible

Terminer les processus : commandes kill, killall, pkill

1. Terminaison des processus

Aujourd'hui, on va passer un niveau supérieur et apprendre les commandes qui permettent de terminer efficacement les processus. Prépare-toi, car la patience envers les programmes "figés" arrive bientôt à sa fin !

Chaque application ou commande lancée sous Linux est un processus. Mais que faire si une appli est bloquée, utilise 100% des ressources CPU ou cesse tout simplement de fonctionner correctement ? La mission d'un admin (ou d'un dev) est d'intervenir et de stopper le processus "rebelle". Sous Linux, on dispose d'un arsenal complet d'outils pour ça : kill, killall et pkill. Pas de panique, malgré leurs noms sévères, on n'est pas là pour tout casser. C'est plutôt une manière élégante de remettre de l'ordre.


2. Commande kill

Les Bases

La commande kill termine un processus en fonction de son identifiant (PID). Le PID est un numéro unique attribué par le système à chaque processus. Par exemple, si tu veux terminer un processus avec le PID 1234, utilise la commande suivante :

kill 1234

Linux, par nature, est assez démocratique, donc la commande kill n'envoie pas un ordre direct « Mourir », mais une requête pour terminer. Cette requête s'appelle un « signal ». Par défaut, kill envoie le signal SIGTERM (15).

Qu'est-ce qu'un signal ?

Linux utilise des signaux pour communiquer avec les processus. C'est comme envoyer des cartes postales avec différentes intentions :

  • SIGTERM (15): « S'il te plaît, termine-toi. » C'est une demande polie au processus pour qu'il termine son exécution.
  • SIGKILL (9): « Bon, ça suffit, tu es viré ! » C'est une interruption forcée du processus.
  • SIGHUP (1): « Hé, recharge la configuration. » Utilisé pour redémarrer certains processus sans les arrêter.

Exemple de terminaison forcée d'un processus :

kill -9 1234

Si un processus refuse de se terminer avec SIGTERM, tu peux envoyer un signal plus strict – SIGKILL.

Comment trouver le PID d'un processus ?

Pour utiliser la commande kill, il te faut connaitre le PID du processus. Les commandes bien connues ps, top ou htop peuvent t'aider. Par exemple, la sortie de la commande ps aux te montrera tous les processus en cours d'exécution :

ps aux | grep firefox

Cette requête trouvera le processus Firefox et affichera son PID.

Le processus est terminé, tu peux souffler. Mais que faire s'il y a plusieurs processus "bloqués" ? C'est là que les commandes killall et pkill entrent en jeu.


3. Commande killall

Pratique pour une terminaison massive

La commande killall permet de terminer tous les processus avec un nom spécifique. Pas besoin de chercher manuellement le PID, tout est beaucoup plus simple. Par exemple, si tu veux fermer toutes les instances ouvertes de Firefox :

killall firefox

Comme la commande kill, killall envoie des signaux aux processus. Tu peux spécifier un signal particulier :

killall -9 firefox

Astuce utile

Fais attention avec des commandes comme killall. Si tu indiques accidentellement un processus trop général, par exemple, killall python, tu peux terminer immédiatement toutes les applications Python en cours d'exécution, y compris des tâches serveurs ou des scripts importants.

Quels signaux sont supportés ?

Pour toutes les commandes kill, killall et pkill, la liste des signaux disponibles peut être consultée avec la commande :

kill -l

4. Commande pkill

Recherche de processus par nom (ou une partie de celui-ci)

La commande pkill fonctionne de manière similaire à killall, mais elle est plus flexible. Elle permet de terminer les processus qui correspondent à un certain modèle. Par exemple :

pkill fire

Cette commande terminera tous les processus qui contiennent le mot "fire" dans leur nom. C’est pratique dans les cas où le nom du processus est long ou si vous n’en connaissez qu’une partie.

Terminaison des processus des utilisateurs

Vous pouvez terminer les processus appartenant à des utilisateurs spécifiques. Par exemple :

pkill -u username

Cela terminera tous les processus appartenant à l'utilisateur username.

Comparaison entre kill, killall et pkill

Commande Caractéristiques
kill Termine un processus via son PID. Fonctionne de façon ciblée.
killall Termine tous les processus avec un nom donné. Utile pour des fermetures en masse.
pkill Termine des processus par nom ou modèle. Supporte des options supplémentaires telles que le nom d'utilisateur.

5. Pratique : terminer des processus

Essayons tout ce qu'on a appris en pratique. Tout d'abord, lançons quelques processus longue durée :

sleep 300 &
sleep 400 &
sleep 500 &

Ces commandes vont créer trois processus en arrière-plan avec des durées d'attente différentes. Maintenant, vous pouvez travailler avec les commandes kill, killall et pkill.

  1. Afficher tous les processus sleep en cours avec la commande ps :
ps aux | grep sleep

Vous verrez le PID de chaque processus.

  1. Terminez le processus avec le PID, par exemple, 1234 :
kill 1234
  1. Terminez tous les processus sleep d'un coup :
killall sleep
  1. Lancez encore quelques processus sleep et terminez-les avec pkill :
pkill sl

6. Erreurs typiques et points importants

Si tu essaies de terminer un processus auquel tu n'as pas les droits (par exemple, un processus d'un autre utilisateur), la commande va retourner une erreur. Pour cela, tu dois avoir les privilèges super-utilisateur (sudo). Par exemple :

sudo kill 1234

Une autre source de confusion peut être l'utilisation de signaux trop agressifs comme -9. C'est équivalent à débrancher l'ordinateur sans l'éteindre correctement : le système n'aura pas le temps de libérer les ressources ou sauvegarder les données. Utilise SIGKILL uniquement en cas d'urgence.

Fais attention avec killall et pkill, surtout si tu gères un serveur. Terminer des processus "à l'aveugle" peut mener à une perte de données importantes.


Pourquoi est-ce important de connaître les commandes pour terminer des processus ?

Ces commandes ont un large éventail d'applications, allant de la fermeture des applications bloquées à la gestion des processus serveurs. Lors d'un entretien, connaître kill et pkill peut être un indicateur clé de tes compétences, surtout si tu travailles dans l'administration système ou avec le backend.

Utilise ces connaissances pour créer des scripts qui terminent automatiquement les processus incontrôlés ou libèrent les ports utilisés. Par exemple, avant de lancer un serveur qui utilise le port 8080, tu peux utiliser :

pkill -f "port 8080"

La flexibilité et la puissance de ces commandes en font des outils indispensables pour tout spécialiste Linux.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION