Commande killall : arrêter des processus par leur nom, le signal -9 et installer psmisc

Environnement de testFamille RHELAlmaLinux 9.8psmisc 23.4Compte rootDebian 12 · psmisc 23.6 Compte normal (exécute killall)
Commandes de processus et de planificationkillallEmplacement/usr/bin/killallVérifié le 2026-11-03

La commande killall est une commande Linux qui choisit les processus en cours d'exécution par le nom du programme plutôt que par le numéro de processus (PID) et leur envoie un signal ; si vous n'indiquez aucun signal, elle envoie SIGTERM (selon le manuel officiel). Comme elle arrête d'un coup tous les processus portant le même nom, nous avons d'abord vérifié avec pgrep et ps quatre processus lancés sur un serveur AlmaLinux 9 à partir de copies de sleep sous d'autres noms ; pour un exécutable de plus de 15 caractères, seuls les 15 premiers caractères restaient dans le nom du processus.

Nous avons exécuté killall uniquement sur des processus xxsleep lancés pour le test avec un compte normal sur un serveur Debian 12. Les blocs de résultats montrent la sortie de rpm, pgrep, ps, pidof, cat et kill exécutés avec le compte root sur un serveur AlmaLinux 9.8, et la sortie de killall exécuté sur le serveur Debian 12. Les numéros de processus (PID), les noms de processus, les chemins des exécutables et les noms de compte ont été remplacés par des valeurs d'exemple.

1️⃣ Installer la commande killall

  • ↪️ Le paquet psmisc et la vérification de la version

killall fait partie du paquet psmisc. Sur un serveur AlmaLinux 9.8, en vérifiant avec rpm à quel paquet appartient /usr/bin/killall, la version psmisc 23.4 s'est affichée.

rpm -qf --qf '%{NAME} %{VERSION}\n' /usr/bin/killall
psmisc 23.4

La liste des fichiers du même paquet, affichée avec rpm -ql, contenait aussi pstree et fuser.

Si [command not found] s'affiche, c'est-à-dire que la commande est introuvable, installez le paquet psmisc. Sur la famille RHEL, c'est [dnf install psmisc], et sur la famille Debian, [apt install psmisc]. Sur le serveur Debian 12, psmisc 23.6 était déjà installé, et killall se trouvait dans /usr/bin/killall.

En vérifiant sur le serveur AlmaLinux 9.8, pkill, au nom proche, se trouvait dans le paquet procps-ng, et kill était une commande intégrée du shell.

2️⃣ Utiliser la commande killall

  • ↪️ Vérifier les cibles par nom de processus

La forme de base est [killall nom du processus]. Elle trouve tous les processus en cours portant le nom indiqué et leur envoie un signal ; si vous indiquez plusieurs noms, elle fait la même chose pour chaque nom (selon le manuel officiel).

Comme les processus portant le même nom s'arrêtent tous en même temps, vérifiez d'abord avec pgrep ce qui tourne sous ce nom. Nous avons copié sleep dans un dossier de travail sous les noms xxsleep-a1, xxsleep-a2 et xxsleep-longname-x1, lancé xxsleep-a1 deux fois pour avoir quatre processus au total, puis affiché les numéros et les noms avec -l.

pgrep -l xxsleep
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2
2155 xxsleep-longnam

Sur la quatrième ligne, l'exécutable s'appelle xxsleep-longname-x1, mais le nom du processus était coupé à xxsleep-longnam.

Avec -a, la ligne de commande complète exécutée s'affiche. Les deux xxsleep-a1 de même nom ont été distingués par le dernier argument en secondes, 300 et 310.

pgrep -a xxsleep
2141 /root/work/xxsleep-a1 300
2142 /root/work/xxsleep-a1 310
2150 /root/work/xxsleep-a2 320
2155 /root/work/xxsleep-longname-x1 330

Pour ne trouver que les processus dont le nom correspond exactement, ajoutez -x. Avec xxsleep-a1, le résultat était deux numéros.

pgrep -x xxsleep-a1
2141
2142

Pour ne vérifier que les numéros en saisissant un nom tel quel, utilisez pidof. La recherche de xxsleep-a1 a affiché les deux numéros sur une ligne.

pidof xxsleep-a1
2142 2141

ps n'affiche que les processus dont le nom correspond exactement si vous indiquez plusieurs noms séparés par des virgules après -C.

ps -o pid,comm -C xxsleep-a1,xxsleep-a2
    PID COMMAND
   2141 xxsleep-a1
   2142 xxsleep-a1
   2150 xxsleep-a2

Sur le serveur Debian 12, nous avons lancé quatre processus sous les mêmes noms et exécuté [killall xxsleep-a1] : rien ne s'est affiché et la commande s'est terminée avec le code de sortie 0. En cherchant de nouveau avec pgrep, les deux xxsleep-a1 avaient disparu et seuls xxsleep-a2 et xxsleep-longname-x1 restaient. Si vous indiquez un chemin contenant une barre oblique (/) au lieu d'un nom, elle choisit les processus qui exécutent ce fichier, quel que soit leur nom (selon le manuel officiel).

Avec le nom inexistant xxsleep-zz, une ligne avec [no process found] après le nom s'est affichée, et la commande s'est terminée avec le code de sortie 1. Le code de sortie n'est 0 que si au moins un processus a été arrêté pour chaque nom indiqué (selon le manuel officiel).

killall xxsleep-zz
xxsleep-zz: no process found

Pour arrêter un seul processus dont vous connaissez le numéro, envoyez un signal à ce seul numéro avec kill : Commande Linux kill.

3️⃣ Options de la commande killall

  • ↪️ -e et les noms de 15 caractères, -i, -v, -u, -r

En lisant dans /proc/PID/comm le nom du processus lancé sous xxsleep-longname-x1, seuls les 15 premiers caractères restaient : xxsleep-longnam.

cat /proc/2155/comm
xxsleep-longnam

Nous avons exécuté pgrep avec xxsleep-longname, qui fait 16 caractères.

pgrep -a xxsleep-longname

La commande s'est terminée sans sortie avec le code de sortie 1, et en cherchant de nouveau avec xxsleep-longnam, de 15 caractères, ce processus est apparu.

pgrep -l xxsleep-longnam
2155 xxsleep-longnam

Lorsque killall reçoit un nom de plus de 15 caractères et que certains processus ont un nom complet illisible, il cible tous ceux dont les 15 premiers caractères correspondent ; avec -e, il ignore ces entrées (selon le manuel officiel). Sur le serveur Debian 12, en indiquant les 15 premiers caractères xxsleep-longnam avec -e et -v, des lignes ont indiqué que trois autres processus au nom coupé à 15 caractères étaient ignorés, et la commande s'est terminée par [no process found].

killall -e -v xxsleep-longnam
killall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
xxsleep-longnam: no process found

Avec le nom complet xxsleep-longname-x1, les mêmes lignes d'omission ont été suivies d'une ligne indiquant le signal envoyé à ce processus.

killall -e -v xxsleep-longname-x1
killall: skipping partial match quota_events_un(37)
killall: skipping partial match acpi_thermal_pm(112)
killall: skipping partial match ext4-rsv-conver(246)
Killed xxsleep-longname-x1(2155) with signal 15

Avec -v, une ligne contenant le nom, le numéro et le numéro du signal s'est affichée pour chaque processus ayant reçu un signal.

killall -v xxsleep-a2
Killed xxsleep-a2(2150) with signal 15

-i demande pour chaque processus s'il faut l'arrêter. Nous avons relancé deux xxsleep-a1 et passé y puis n par l'entrée standard : les deux questions se sont affichées à la suite sur une ligne, et seul le premier xxsleep-a1 s'est arrêté, le second est resté.

printf 'y\nn\n' | killall -i xxsleep-a1
Kill xxsleep-a1(2171) ? (y/N) Kill xxsleep-a1(2172) ? (y/N)

-u ne choisit que les processus appartenant à ce compte ; si vous omettez le nom, tous les processus de ce compte sont ciblés. En indiquant aussi xxsleep-a1 après le nom du compte, le signal n'a été envoyé qu'au xxsleep-a1 restant.

killall -v -u user xxsleep-a1
Killed xxsleep-a1(2172) with signal 15

-o et -y choisissent selon l'heure de démarrage, et la durée s'écrit avec un nombre suivi d'une unité s, m, h, d, w, M ou y, comme dans [-o 30m].

-r lit les noms comme des expressions régulières étendues. En passant le motif ^xxsleep-a à pgrep, trois processus commençant par xxsleep-a se sont affichés.

pgrep -l '^xxsleep-a'
2141 xxsleep-a1
2142 xxsleep-a1
2150 xxsleep-a2

-w attend, en vérifiant chaque seconde, que tous les processus ayant reçu un signal aient disparu. Si un processus ignore le signal ou reste à l'état zombie, l'attente peut ne jamais finir.

Le premier tableau ci-dessous regroupe les commandes de vérification et les options de killall réellement exécutées dans cet article ; les options de killall non exécutées figurent dans le second tableau, selon le manuel officiel.

📌 Vérifier les processus et killall : résultats de cet article

CommandeRôleRésultat dans cet article
pgrep -l nomNuméro et nom des processus dont le nom le contientQuatre lignes pour xxsleep ; le nom long ne s'affiche que jusqu'aux 15 premiers caractères, xxsleep-longnam
pgrep -a nomNuméro et ligne de commande complèteLes deux xxsleep-a1 de même nom distingués par les derniers arguments 300 et 310
pgrep -x nomUniquement les numéros des processus dont le nom correspond exactementPour xxsleep-a1, deux lignes : 2141 et 2142
pidof nomLes numéros qui tournent sous ce nom, sur une lignePour xxsleep-a1, 2142 2141
ps -o pid,comm -C nomNuméro et nom des processus dont le nom correspond exactement, plusieurs noms séparés par des virgulesDeux lignes xxsleep-a1 et une ligne xxsleep-a2
cat /proc/PID/commNom du processus (jusqu'aux 15 premiers caractères)2155 est xxsleep-longnam
killall nomSIGTERM aux processus portant ce nomLes deux xxsleep-a1 arrêtés avec le code de sortie 0 ; le nom inexistant xxsleep-zz a donné no process found et le code de sortie 1
killall -e nomLes noms de plus de 15 caractères seulement si le nom complet correspondxxsleep-longnam a donné no process found, xxsleep-longname-x1 arrêté
killall -v nomAffiche le résultat pour chaque processus ayant reçu un signalKilled xxsleep-a2(2150) with signal 15
killall -i nomDemande confirmation pour chaque processus avant de l'arrêterAvec y et n, seul le premier xxsleep-a1 s'est arrêté
killall -u nom du compteUniquement les processus appartenant à ce compteIndiqué avec un nom, seul le xxsleep-a1 de ce compte s'est arrêté
killall -9 nomSIGKILL au lieu de SIGTERMKilled xxsleep-a2(2173) with signal 9

📎 Autres options : selon le manuel officiel

OptionRôle
-I, --ignore-caseComparer les noms sans tenir compte de la casse
-g, --process-groupSignal au groupe de processus au lieu du processus (une fois par groupe)
-l, --listListe des noms de signaux connus
-n, --ns PIDUniquement les processus du même espace de noms PID que ce PID ; par défaut, tous les espaces de noms
-o, --older-than duréeUniquement les processus démarrés depuis plus longtemps que cette durée (unités s, m, h, d, w, M, y)
-q, --quietNe signale rien même si aucun processus n'a été arrêté
-r, --regexpLire les noms comme des expressions régulières étendues
-s, --signal signalSignal à envoyer au lieu de SIGTERM
-V, --versionAfficher les informations de version
-w, --waitAttendre que tous les processus ayant reçu un signal aient disparu
-y, --younger-than duréeUniquement les processus démarrés depuis moins longtemps que cette durée
-Z, --context motifUniquement les processus dont le contexte de sécurité correspond au motif d'expression régulière étendue ; à indiquer avant les autres arguments ; le nom peut être omis

🔲 Simulateur de la commande killall

Le simulateur ci-dessous commence avec une liste des quatre processus xxsleep plus le xxsleep-a2 du compte d'exemple user1. Touchez les puces pour comparer les lignes qui disparaissent de la liste avec [killall -v], [-i] et [-u] ; les messages de sortie de killall imitent la sortie obtenue sur le serveur Debian 12.

Simulateur de la commande killallpsmisc 23.4
[root@server work]#
Fonctionne uniquement dans votre navigateur. La liste de gauche utilise des valeurs d'exemple, et killall est une imitation qui suit les messages de sortie obtenus sur le serveur Debian 12 et ne supprime des lignes que dans la liste.

4️⃣ Signaux de killall

  • ↪️ L'option -s, killall -9 et les numéros de signal

Le signal à envoyer s'indique par son nom, comme [-HUP] ou [-SIGHUP], par son numéro, comme [-1], ou après l'option -s (selon le manuel officiel). [killall -9 nom du processus] envoie le signal 9, SIGKILL. SIGKILL est un signal qu'un processus ne peut ni intercepter ni ignorer (selon le manuel officiel), si bien que le processus s'arrête sans pouvoir faire de nettoyage. C'est pourquoi on l'envoie quand le signal par défaut, SIGTERM, n'arrête pas le processus.

Sur le serveur Debian 12, en ajoutant -9 avec -v au xxsleep-a2 relancé, une ligne avec le numéro de signal 9 s'est affichée.

killall -9 -v xxsleep-a2
Killed xxsleep-a2(2173) with signal 9

Nous avons vérifié les noms et numéros des signaux avec [kill -l]. killall possède aussi une option -l qui affiche les noms de signaux qu'il connaît.

kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

Avec un seul numéro, seul le nom de ce signal s'est affiché. Le 15 que killall envoie par défaut était TERM, et le 9 envoyé avec -9 était KILL.

kill -l 15
TERM
kill -l 9
KILL

Si vous indiquez un nom de signal absent de la liste, un message de la forme [FOO: unknown signal; killall -l lists signals.] s'affiche (selon le manuel officiel et les messages du programme).

🔢 FAQ & contenus recommandés

killall est une commande du paquet psmisc, et pkill du paquet procps-ng, le même que pgrep. pkill cherche une partie du nom comme expression régulière étendue, comme pgrep, alors que killall ne lit les noms comme expressions régulières qu'avec -r (selon le manuel officiel).

Le manuel officiel de psmisc indique que sur les systèmes autres que Linux, [killall nom] peut ne pas se comporter comme prévu, et qu'il faut être particulièrement prudent en l'exécutant avec le compte administrateur. Sur d'autres systèmes, vérifiez d'abord le manuel de ce système.

Le nombre de noms que vous pouvez indiquer en une fois est limité : la taille d'un entier unsigned long multipliée par 8. C'est généralement 64 sur les systèmes 64 bits et 32 sur les systèmes 32 bits (selon le manuel officiel).

ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 8   +   8   =