killall-commando: processen op naam beëindigen, het signaal -9 en psmisc installeren

TestomgevingRHEL-familieAlmaLinux 9.8psmisc 23.4root-accountDebian 12 · psmisc 23.6 Normaal account (voert killall uit)
Commando's voor processen · taakplanningkillallLocatie/usr/bin/killallGecontroleerd op 2026-11-03

Het killall-commando is een Linux-commando dat draaiende processen niet op procesnummer (PID) maar op programmanaam kiest en ze een signaal stuurt; geef je geen signaal op, dan stuurt het SIGTERM (volgens de officiële handleiding). Omdat het alle processen met dezelfde naam in één keer beëindigt, hebben we op een AlmaLinux 9 server eerst met pgrep en ps vier processen gecontroleerd die waren gestart vanuit kopieën van sleep onder andere namen; bij een uitvoerbaar bestand met een naam van meer dan 15 tekens bleven alleen de eerste 15 tekens over in de procesnaam.

We hebben killall alleen uitgevoerd op xxsleep-processen die voor de test onder een normaal account op een Debian 12 server waren gestart. De resultaatvakken tonen de uitvoer van rpm, pgrep, ps, pidof, cat en kill, uitgevoerd met het root-account op een AlmaLinux 9.8 server, en de uitvoer van killall op de Debian 12 server. Procesnummers (PID), procesnamen, paden van uitvoerbare bestanden en accountnamen zijn vervangen door voorbeeldwaarden.

1️⃣ Het killall-commando installeren

  • ↪️ Het pakket psmisc en de versie controleren

killall hoort bij het pakket psmisc. Toen we op een AlmaLinux 9.8 server met rpm controleerden bij welk pakket /usr/bin/killall hoort, verscheen versie psmisc 23.4.

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

De bestandslijst van hetzelfde pakket, bekeken met rpm -ql, bevatte ook pstree en fuser.

Krijg je [command not found], dus dat het commando niet gevonden wordt, installeer dan het pakket psmisc. In de RHEL-familie is dat [dnf install psmisc], in de Debian-familie [apt install psmisc]. Op de Debian 12 server was psmisc 23.6 al geïnstalleerd, en killall stond in /usr/bin/killall.

Bij controle op de AlmaLinux 9.8 server zat het vergelijkbaar genoemde pkill in het pakket procps-ng, en was kill een ingebouwd shellcommando.

2️⃣ Het killall-commando gebruiken

  • ↪️ Doelen controleren op procesnaam

De basisvorm is [killall procesnaam]. Het zoekt alle draaiende processen met de opgegeven naam en stuurt ze een signaal; geef je meerdere namen op, dan doet het hetzelfde voor elke naam (volgens de officiële handleiding).

Omdat processen met dezelfde naam allemaal tegelijk stoppen, controleer je eerst met pgrep wat er onder die naam draait. We kopieerden sleep in een werkmap onder de namen xxsleep-a1, xxsleep-a2 en xxsleep-longname-x1, startten xxsleep-a1 twee keer, dus vier processen in totaal, en toonden nummers en namen met -l.

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

Op de vierde regel heet het uitvoerbare bestand xxsleep-longname-x1, maar de procesnaam was afgekapt bij xxsleep-longnam.

Met -a verschijnt de volledige opdrachtregel die is uitgevoerd. De twee xxsleep-a1 met dezelfde naam onderscheidden we aan het laatste argument in seconden, 300 en 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

Om alleen processen te vinden waarvan de naam precies overeenkomt, voeg je -x toe. Het resultaat voor xxsleep-a1 was twee nummers.

pgrep -x xxsleep-a1
2141
2142

Wil je alleen de nummers controleren door één naam letterlijk in te voeren, gebruik dan pidof. Zoeken naar xxsleep-a1 gaf beide nummers op één regel.

pidof xxsleep-a1
2142 2141

ps toont alleen processen waarvan de naam precies overeenkomt als je na -C meerdere namen opgeeft, gescheiden door komma's.

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

Op de Debian 12 server startten we vier processen onder dezelfde namen en voerden we [killall xxsleep-a1] uit: er verscheen niets en het eindigde met afsluitcode 0. Bij opnieuw zoeken met pgrep waren beide xxsleep-a1 verdwenen en bleven alleen xxsleep-a2 en xxsleep-longname-x1 over. Geef je in plaats van een naam een pad met een schuine streep (/) op, dan kiest het de processen die dat bestand uitvoeren, ongeacht hun naam (volgens de officiële handleiding).

Met de niet-bestaande naam xxsleep-zz verscheen een regel met [no process found] na de naam, en het eindigde met afsluitcode 1. De afsluitcode is alleen 0 als voor elke opgegeven naam minstens één proces is beëindigd (volgens de officiële handleiding).

killall xxsleep-zz
xxsleep-zz: no process found

Wil je maar één proces beëindigen waarvan je het nummer kent, gebruik dan het Linux-commando kill om alleen naar dat nummer een signaal te sturen.

3️⃣ Opties van het killall-commando

  • ↪️ -e en namen van 15 tekens, -i, -v, -u, -r

Toen we de naam van het als xxsleep-longname-x1 gestarte proces uit /proc/PID/comm lazen, waren alleen de eerste 15 tekens over: xxsleep-longnam.

cat /proc/2155/comm
xxsleep-longnam

We voerden pgrep uit met xxsleep-longname van 16 tekens.

pgrep -a xxsleep-longname

Het eindigde zonder uitvoer met afsluitcode 1, en bij opnieuw zoeken met xxsleep-longnam van 15 tekens verscheen dat proces.

pgrep -l xxsleep-longnam
2155 xxsleep-longnam

Krijgt killall een naam van meer dan 15 tekens en zijn er processen waarvan het de volledige naam niet kan lezen, dan neemt het alle processen waarvan de eerste 15 tekens overeenkomen; met -e slaat het zulke items over (volgens de officiële handleiding). Toen we op de Debian 12 server met -e en -v de eerste 15 tekens xxsleep-longnam opgaven, verschenen regels dat drie andere processen met een na 15 tekens afgekapte naam werden overgeslagen, en het eindigde met [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

Met de volledige naam xxsleep-longname-x1 volgde na dezelfde overslaregels een regel dat er een signaal naar dat proces was gestuurd.

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

Met -v verscheen voor elk proces dat een signaal kreeg een regel met de naam, het nummer en het signaalnummer.

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

-i vraagt per proces of het moet worden beëindigd. We startten opnieuw twee xxsleep-a1 en gaven y en n na elkaar via de standaardinvoer: de twee vragen verschenen achter elkaar op één regel, alleen de eerste xxsleep-a1 stopte en de tweede bleef.

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

-u kiest alleen processen die eigendom zijn van dat account; laat je de naam weg, dan zijn alle processen van dat account het doel. Toen we na de accountnaam ook xxsleep-a1 opgaven, ging het signaal alleen naar de overgebleven xxsleep-a1.

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

-o en -y kiezen op starttijd, en de tijd schrijf je als een getal met daarachter een eenheid s, m, h, d, w, M of y, zoals in [-o 30m].

-r leest namen als uitgebreide reguliere expressies. Met het patroon ^xxsleep-a in pgrep verschenen drie processen die met xxsleep-a beginnen.

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

-w wacht en controleert elke seconde, tot alle processen die een signaal kregen verdwenen zijn. Negeert een proces het signaal of blijft het als zombie achter, dan kan killall eindeloos wachten.

De eerste tabel hieronder bevat de controlecommando's en killall-opties die in dit artikel echt zijn uitgevoerd; de niet uitgevoerde killall-opties staan in de tweede tabel, volgens de officiële handleiding.

📌 Processen controleren en killall: resultaten uit dit artikel

CommandoTaakResultaat in dit artikel
pgrep -l naamNummer en naam van processen waarvan de naam het bevatVier regels voor xxsleep; de lange naam is alleen zichtbaar tot de eerste 15 tekens, xxsleep-longnam
pgrep -a naamNummer en volledige opdrachtregelDe twee xxsleep-a1 met dezelfde naam onderscheiden aan de laatste argumenten 300 en 310
pgrep -x naamAlleen nummers van processen waarvan de naam precies overeenkomtVoor xxsleep-a1 twee regels: 2141 en 2142
pidof naamNummers die onder die naam draaien, op één regelVoor xxsleep-a1 2142 2141
ps -o pid,comm -C naamNummer en naam van processen waarvan de naam precies overeenkomt; meerdere namen gescheiden door komma'sTwee regels xxsleep-a1 en één regel xxsleep-a2
cat /proc/PID/commProcesnaam (tot de eerste 15 tekens)2155 is xxsleep-longnam
killall naamSIGTERM naar processen met die naamBeide xxsleep-a1 gestopt met afsluitcode 0; de niet-bestaande naam xxsleep-zz gaf no process found en afsluitcode 1
killall -e naamNamen van meer dan 15 tekens alleen als de volledige naam overeenkomtxxsleep-longnam gaf no process found, xxsleep-longname-x1 gestopt
killall -v naamToont het resultaat voor elk proces dat een signaal kreegKilled xxsleep-a2(2150) with signal 15
killall -i naamVraagt per proces om bevestiging vóór het beëindigenMet y en n stopte alleen de eerste xxsleep-a1
killall -u accountnaamAlleen processen die eigendom zijn van dat accountSamen met een naam opgegeven: alleen xxsleep-a1 van dat account gestopt
killall -9 naamSIGKILL in plaats van SIGTERMKilled xxsleep-a2(2173) with signal 9

📎 Andere opties: volgens de officiële handleiding

OptieTaak
-I, --ignore-caseNamen vergelijken zonder onderscheid tussen hoofdletters en kleine letters
-g, --process-groupSignaal naar de procesgroep in plaats van het proces (één keer per groep)
-l, --listLijst van bekende signaalnamen
-n, --ns PIDAlleen processen in dezelfde PID-namespace als die PID; standaard alle namespaces
-o, --older-than tijdAlleen processen die vóór die tijd zijn gestart (eenheden s, m, h, d, w, M, y)
-q, --quietGeen melding, ook als er geen proces is beëindigd
-r, --regexpNamen lezen als uitgebreide reguliere expressies
-s, --signal signaalSignaal dat in plaats van SIGTERM wordt gestuurd
-V, --versionVersie-informatie tonen
-w, --waitWachten tot alle processen die een signaal kregen verdwenen zijn
-y, --younger-than tijdAlleen processen die na die tijd zijn gestart
-Z, --context patroonAlleen processen waarvan de beveiligingscontext overeenkomt met het uitgebreide regex-patroon; vóór andere argumenten opgeven; de naam mag weg

🔲 Simulator van het killall-commando

De simulator hieronder begint met een lijst van de vier xxsleep-processen plus de xxsleep-a2 van het voorbeeldaccount user1. Tik op de chips om te vergelijken welke regels uit de lijst verdwijnen met [killall -v], [-i] en [-u]; de uitvoerteksten van killall bootsen de uitvoer van de Debian 12 server na.

Simulator van het killall-commandopsmisc 23.4
[root@server work]#
Werkt alleen in je browser. De lijst links bevat voorbeeldwaarden, en killall is een nabootsing die de uitvoerteksten van de Debian 12 server volgt en alleen regels uit de lijst verwijdert.

4️⃣ Signalen van killall

  • ↪️ De optie -s, killall -9 en signaalnummers

Het signaal dat je stuurt, geef je op met een naam, zoals [-HUP] of [-SIGHUP], met een nummer, zoals [-1], of na de optie -s (volgens de officiële handleiding). [killall -9 procesnaam] stuurt signaal 9, SIGKILL. SIGKILL is een signaal dat een proces niet kan opvangen of negeren (volgens de officiële handleiding), dus het proces stopt zonder op te ruimen. Daarom stuur je het als het standaardsignaal SIGTERM het proces niet beëindigt.

Toen we op de Debian 12 server bij de opnieuw gestarte xxsleep-a2 samen met -v ook -9 opgaven, verscheen een regel met signaalnummer 9.

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

Signaalnamen en -nummers hebben we gecontroleerd met [kill -l]. Ook killall heeft een optie -l die de bekende signaalnamen toont.

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

Met één nummer verscheen alleen de naam van dat signaal. De 15 die killall standaard stuurt, was TERM, en de 9 die met -9 wordt gestuurd, was KILL.

kill -l 15
TERM
kill -l 9
KILL

Geef je een signaalnaam op die niet in de lijst staat, dan verschijnt een melding in de vorm [FOO: unknown signal; killall -l lists signals.] (volgens de officiële handleiding en de programmatekst).

🔢 FAQ & aanbevolen content

killall is een commando uit het pakket psmisc, pkill uit het pakket procps-ng, net als pgrep. pkill zoekt net als pgrep een deel van de naam als uitgebreide reguliere expressie, terwijl killall namen alleen met -r als reguliere expressie leest (volgens de officiële handleiding).

De officiële psmisc-handleiding schrijft dat [killall naam] op systemen die geen Linux zijn anders kan werken dan verwacht, en dat je extra voorzichtig moet zijn als je het met het beheerdersaccount uitvoert. Controleer op andere systemen eerst de handleiding van dat systeem.

Het aantal namen dat je in één keer kunt opgeven is beperkt: de grootte van een unsigned long integer maal 8. Op 64-bits systemen is dat meestal 64, op 32-bits systemen 32 (volgens de officiële handleiding).

ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Laat zien dat je geen machine bent: 4   +   7   =