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
.
- Afficher tous les processus
sleep
en cours avec la commandeps
:
ps aux | grep sleep
Vous verrez le PID de chaque processus.
- Terminez le processus avec le PID, par exemple, 1234 :
kill 1234
- Terminez tous les processus
sleep
d'un coup :
killall sleep
- Lancez encore quelques processus
sleep
et terminez-les avecpkill
:
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.
GO TO FULL VERSION