Het beheren van processen in Linux kan in het begin intimiderend lijken voor een nieuwe systeembeheerder (sysadmin). Maar met een beetje uitleg en demonstratie, zul je leren hoe je Linux-processen kunt vinden en beëindigen met behulp van command-line tools zoals ps
en kill
.
In dit artikel leer je commando’s voor het lokaliseren van actieve en afwijkende processen, het beëindigen van actieve processen, het vinden van achtergrondprocessen, en nog veel meer op elk Linux-besturingssysteem.
Tegen het einde van het artikel zul je processen beheren op basis van procesidentificatienummers (PIDs) vanaf de commandoregel als een Linux-professional. Blijf lezen om alles te leren over procesbeheercommando’s in Linux!
Vereisten
Dit artikel wordt een stapsgewijze handleiding over het beheren van processen in Linux. Als je praktijkervaring wilt opdoen, heb je het volgende nodig:
- A Linux host, which can be a virtual machine or a physical machine.
- Om de PowerShell-voorbeelden uit te proberen, installeer PowerShell 7.1.1 op een Linux-host.
- A non-root user account. While root access is not required, there will be an example where the root user can kill the running process of another user.
De distributie van Linux die je wilt gebruiken, is aan jou. Dit artikel is gebaseerd op Ubuntu 20.04 LTS. De commando’s zijn echter standaard voor het Linux-besturingssysteem.
Klaar om te beginnen? Goed, laten we erin duiken.
Processen beheren in Linux
Op gelegenheid kunt u tegen een scenario aanlopen waarin u een lopend proces op een Linux-systeem moet stoppen. Als voorbeeld kunt u een bash-script hebben dat volgens een schema wordt uitgevoerd. Dat bash-script is geconfigureerd om uitgevoerd te worden als een andere gebruiker via een cron taak (Linux procesplanner).
Soms maakt dit script abusieve processen aan die ervoor kunnen zorgen dat het script faalt. Hoe kunt u die abusieve processen stoppen zonder het systeem opnieuw op te starten of het script te stoppen?
In de volgende secties loopt u door commando’s die worden gebruikt om processen op een Linux-systeem te lokaliseren en te beëindigen of te stoppen. Elke sectie zal voortbouwen op de vorige. U leert over ps
, top
, pgrep
, kill
en pkill
commando’s die allemaal inheems zijn voor Linux.
Als bonus zijn PowerShell-equivalente commando’s Get-Process
en Stop-Process
opgenomen als Linux-native commando’s niet uw voorkeur hebben.
Gereedschappen voor het lokaliseren van processen
Voordat u een proces beëindigt, moet u het juiste proces lokaliseren om te targeten. De unieke PID maakt nauwkeurige targeting mogelijk. Lees verder om te leren hoe u de juiste processen voor beëindiging kunt lokaliseren.
Het gebruiken van het ps
Commando om Procesinformatie weer te geven
De Processtatus of ps
-opdracht toont informatie over actieve processen op een Linux-systeem. Je kunt een draaiend proces lokaliseren en zelfs achtergrondprocessen vinden met ps
.
De opdracht ps
toont standaard alle processen voor de effectieve gebruikersidentificatie (EUID) van de huidige gebruiker. Wanneer je de ps
-opdracht uitvoert, zoals hieronder weergegeven, worden alle draaiende processen geretourneerd die jouw gebruiker kan beëindigen.

bkindle
.Uitgebreide procesinformatie vinden met behulp van het top
-commando
Wat als je voortdurend vernieuwende informatie over draaiende processen en systeemprestaties wilt vinden, in dat geval kun je het top
-commando gebruiken. In tegenstelling tot ps
update het top
-commando de procesinformatie op het scherm over een ingesteld interval.
Wanneer je het top
-commando uitvoert, zie je meer dan alleen een PID. Bij de procesdetails zijn CPU- en geheugenpercentages inbegrepen, Mooie waarden (CPU-planningsprocesprioriteit), en de procesprioriteit (PR) ingesteld door de Linux-kernel.
Voor een nieuwe of ervaren systeembeheerder is het top
-commando vaak het belangrijkste gereedschap voor het beheren van vitale systeembronnen en processen. Zoals hieronder weergegeven, toont de uitvoer van het top
-commando meer procesinformatie dan het ps
-commando, inclusief algemene systeemstatistieken.

top
command on Ubuntu Desktop 20.04 LTS showing all running PID’s.htop
is een verbeterde variant van top
die verschillende verbeteringen bevat, zoals een gekleurde terminaluitvoer.
Stel dat je het geheugen of de CPU-bronnen wilt inspecteren die een proces verbruikt. In dat geval kun je de p
-schakelaar van top
gebruiken zoals hieronder wordt weergegeven.

Misschien moet je alle actieve processen voor een specifieke gebruikersnaam weergeven. Het top
-commando biedt de u
-schakelaar om alleen processen van een specifieke gebruiker weer te geven. Zoals te zien is in het onderstaande voorbeeld, worden alleen PIDs die overeenkomen met de gebruikers-ID bkindle
weergegeven.

top
command displaying only processes for the user bkindle
.Het lokaliseren van specifieke proces-PID’s met het pgrep
-commando
Oorspronkelijk een Solaris-commando, pgrep
is overgezet voor gebruik met Linux. Door de zoekkracht van het grep
-commando te combineren met het procesbeheer van ps
, biedt pgrep
flexibiliteit bij het vinden van het exacte proces om te targeten.
Hoewel ps
meer informatie weergeeft, is pgrep
ontworpen om alleen de PID van de geretourneerde processen terug te geven. pgrep
helpt bij het lokaliseren van het proces met behulp van de veel beschikbare zoekparameters. In het volgende voorbeeld wordt pgrep
getoond bij het zoeken naar een proces dat overeenkomt met vmtoolsd
.

pgrep
to obtain all PIDs associated with vmtoolsd
.Vergelijkbaar, specificeer een gebruikers-ID met de u
-schakelaar om alleen processen op te halen die specifiek zijn voor die gebruiker. Zoals hieronder getoond, wordt slechts één PID geretourneerd voor de gebruiker bkindle
en het proces vmtoolsd
.

vmtoolsd
process associated with the user bkindle
.Het vinden van processen met PowerShell’s Get-Process
in Linux
Typische Linux-commando’s werken prima, maar wist je dat PowerShell ook in staat is om Linux-processen te beheren? De Get-Process
-cmdlet werkt vergelijkbaar met het Linux ps
-commando en geeft procesinformatie terug. Bijvoorbeeld, misschien moet je alle lopende processen vinden van de huidige gebruiker, bkindle
. Zoals hieronder getoond, vind alle PIDs (gelabeld als ID door Get-Process
) van de gebruiker bkindle
.

Get-Process
cmdlet.Gerelateerd: Hoe PowerShell Where-Object te gebruiken om alles te filteren
Nadat je hebt geleerd hoe je verschillende processen kunt vinden, lees verder om alle manieren te ontdekken om een proces te beëindigen of te doden in Linux!
Processen beëindigen met de kill-commando’s in Linux
In eerdere secties heb je geleerd hoe je de PID kunt vinden van het proces waar je een kill-signaal naartoe wilt sturen met behulp van native Linux- en PowerShell-commando’s. De volgende secties zullen uitleggen hoe je de kill
– en pkill
-programma’s gebruikt, de bijbehorende signalen en commandoregelopties.
Linux-signalen en procesbeheer
Signalen zijn de methode die Linux gebruikt om te communiceren met processen die draaien in het besturingssysteem. De drie primaire signalen die het kill
-commando gebruikt om processen te beëindigen zijn:
- 1 (SIGHUP) – Beëindigt interactieve programma’s en zorgt ervoor dat daemons (achtergronddiensten) de configuratiebestanden opnieuw lezen die het proces gebruikt.
- 9 (SIGKILL) – Dwz. het proces om te stoppen zonder genadige taken voor het afsluiten uit te voeren.
- 15 (SIGTERM) – Maakt het mogelijk voor een proces om genadig te beëindigen, zoals het sluiten van open bestanden wanneer het klaar is. Dit is het standaardsignaal dat wordt gebruikt wanneer geen getal is gespecificeerd bij het gebruik van het kill-commando.
Hoewel dit artikel zich alleen richt op de drie belangrijkste signalen die worden gebruikt om processen te beëindigen, zijn er in totaal 64 beschikbare signalen. Gebruik
kill -l
om de lijst met signalen en hun overeenkomstige nummer te krijgen.
Nu u de drie belangrijkste signalen begrijpt die worden gebruikt bij het beëindigen van een proces, leert u hoe u een proces kunt beëindigen in de volgende secties.
Het gebruiken van het kill
-commando om een proces te beëindigen
In dit volgende voorbeeld zult u het kill
-commando gebruiken. Stel dat u voor een moment een PowerShell-instantie draait, genaamd pwsh
, en de toegewezen PID is 22687. Een manier om dit proces te beëindigen wordt hieronder getoond.
- Gebruik
pgrep pwsh
om de PID voor het procespwsh
te bepalen, gebruikt in hetkill
-commando. - Gebruik
kill -s TERM 22687
om hetpwsh
-proces genadig te beëindigen. HetTERM
-commando komt overeen met het 15 (SIGTERM) signaal en wordt aangeduid met des
-parameter van hetkill
-commando. - Gebruik naar keuze
top
,ps
ofpgrep
om te controleren of het PID niet langer vermeld staat.
Hieronder wordt een voorbeeld getoond van het bovenstaande proces vanuit een Ubuntu 20.04 LTS bash-terminal.

kill
and associated commands to terminate the pwsh
process.Het
killall
-commando zal alle processen beëindigen op basis van naam in plaats van PID, wat dit commando behoorlijk destructief kan maken als het onzorgvuldig wordt gebruikt. Als je ervoor kiest om dit commando te gebruiken, gebruik dan dei
-optie om het commando om bevestiging te vragen.
Processen beëindigen op naam met pkill
Je hebt misschien gemerkt dat het kill
-commando alleen met proces-ID’s werkt. Dit kan het beëindigen van een proces een gecompliceerd meerstappenproces maken. Het pkill
-commando, opgenomen in de procps en procps-ng-pakketten, beëindigt een proces op basis van een zoeknaam.
Functioneel fungeert het pkill
-commando als een wrapper rond het pgrep
-programma. Het pkill
-commando stuurt een gespecificeerd signaal naar elk gevonden proces in plaats van alleen de PIDs in de terminal op te sommen. pkill
verschilt van kill
doordat pkill
alleen de naam van een proces kan gebruiken, niet de PID.
Het
pkill
-commando is niet standaard beschikbaar in Ubuntu 20.04 LTS. Je zult de toepassing moeten downloaden en installeren. Doe dit doorsudo apt install mcollective-plugins-process -y
uit te voeren.
Om een proces te beëindigen met behulp van pkill
, voer je de volgende stappen uit:
- Gebruik
ps
om te controleren of de nano-toepassing (een opdrachtregel teksteditor) momenteel actief is. Deze stap is optioneel, maar een veiligheidscontrole voordat je een proces beëindigt. - Gebruik
pkill -9 nano
om de nano-toepassing krachtig te beëindigen.
Hieronder wordt een voorbeeld getoond van het bovenstaande proces vanuit een bash-terminal van Ubuntu 20.04 LTS.

pkill
command to forcefully terminate the nano process.Een Proces Beëindigen met het Top
-commando
Wanneer je het top
-commando uitvoert om actieve processen te bekijken, kun je een bepaald proces beëindigen met de k-toetsaanslag. Je ziet een interactieve prompt die vraagt om de PID van een proces om te beëindigen.
Zoals hieronder getoond, voer het top
-commando uit en druk op k. Voer de PID in die je wilt beëindigen en druk op de Enter-toets om de PID onmiddellijk te beëindigen.

top
to specify a process to terminate using the k keystroke.Leer vervolgens nog een alternatief voor native Linux-commando’s door het PowerShell Stop-Process
-commando te gebruiken!
Gebruik de PowerShell Stop-Process
opdracht om een proces te beëindigen
Als Linux-natieve commando’s niet jouw ding zijn, heeft PowerShell je gedekt! Net zoals bij het kill
commando, kun je processen beëindigen met behulp van de Stop-Process
cmdlet in Linux. Doe opnieuw alsof je een PowerShell pwsh
proces uitvoert.
- Vind de PID met
Get-Process -ProcessName 'pwsh'
en noteer de PIDs om te beëindigen. - Gebruik
Stop-Process -Id 29992,30014
om de meerdere processen te beëindigen die zijn teruggegeven. - Gebruik
Get-Process -ProcessName 'pwsh'
en controleer de PIDs,29992
en30014
worden niet langer vermeld, wat betekent dat ze zijn beëindigd.
Je kunt ook
Get-Process
en dekill
methode gebruiken om één of meerdere processen te beëindigen:(Get-Process -Id [PID]).Kill()
of(Get-Process -Id [PID1,2,3,4]).Kill()
.Wees voorzichtig bij het gebruik van de
ProcessName
parameter. Het gebruik van deze parameter gedraagt zich vergelijkbaar met hetkillall
commando en zal alle processen beëindigen die overeenkomen met de opgegeven naam(s).
Hieronder staat een voorbeeld van het bovenstaande proces vanuit een Ubuntu 20.04 LTS bash-terminal.

Stop-Process
to kill processes in Linux.Volgende stappen
Je zou nu moeten weten op welke manieren je processen kunt vinden en beëindigen in Linux! Voor je volgende uitdaging, probeer processen op afstand te beëindigen met behulp van SSH-verbindingen of door processen te beëindigen die mogelijk worden uitgevoerd in containers.
Gerelateerd: Een Windows-man in een Linux-wereld: SSH instellen in Linux