in howto

pgrep: processen zoeken zonder gedoe

Als je wilt weten of een bepaald proces draait, grijpen veel gebruikers naar ps aux | grep procesnaam. Dat werkt, maar pgrep is compacter en krachtiger. Het commando zoekt direct in de procestabel en geeft standaard alleen de PID terug.

Basisgebruik

pgrep firefox

Geeft de PID(s) terug van alle processen waarvan de naam "firefox" bevat. Geen extra pipes nodig.

De meest handige opties

Procesnaam erbij tonen (-l)

pgrep -l ssh

Uitvoer:

1234 sshd
1456 ssh

Handig als je niet zeker weet hoe het proces exact heet.

Volledige commandoregel tonen (-a)

pgrep -a python

Uitvoer:

2345 python3 /home/dexter/scripts/monitor.py

Zo zie je niet alleen de naam maar ook met welke argumenten het proces gestart is.

Zoeken in de volledige commandoregel (-f)

Standaard zoekt pgrep alleen in de procesnaam. Met -f zoek je in de hele commandoregel:

pgrep -f monitor.py

Handig als je een specifiek script of argument wilt vinden.

Exact matchen (-x)

pgrep -x bash

Geeft alleen processen die exact "bash" heten — dus geen "rbash" of "bash_profile".

Aantal matches tellen (-c)

pgrep -c nginx

Geeft simpelweg het aantal draaiende nginx-processen terug. Handig in scripts.

Controleren of iets draait (in een script)

if pgrep -x mpd > /dev/null; then
    echo "MPD draait"
fi

pgrep geeft exitcode 0 als er een match is, en 1 als er geen is. Door de uitvoer naar /dev/null te sturen gebruik je het puur als true/false check.

Processen van een specifieke gebruiker (-u)

pgrep -u dexter

Toont alle processen die onder jouw gebruikersnaam draaien.

pgrep -u dexter python

Combineert gebruiker én procesnaam: alleen Python-processen van dexter.

Inverse matching (-v)

pgrep -v -u root

Alle processen die niet van root zijn. Minder vaak nodig, maar kan handig zijn in scripts.

Meest recente of oudste instantie (-n en -o)

pgrep -n bash   # meest recent gestarte bash
pgrep -o bash   # langst draaiende bash

Nuttig als er meerdere instanties draaien en je er één wilt aanspreken.

Combineren met kill

pgrep werkt goed samen met kill. In plaats van:

kill $(pgrep firefox)

Kun je ook pkill gebruiken, dat is de killvariant van pgrep en accepteert dezelfde opties:

pkill -x mpd
pkill -u dexter python

Samenvatting

OptieWat het doet
-lToon PID + procesnaam
-aToon PID + volledige commandoregel
-fZoek in volledige commandoregel
-xExacte match op procesnaam
-cTel het aantal matches
-uFilter op gebruiker
-nMeest recent gestarte match
-oLangst draaiende match
-vInverse: alles behalve de match

pgrep is een kleine maar veelzijdige tool die ps | grep in de meeste gevallen overbodig maakt — zeker in scripts waar je een nette exitcode wilt.

tipshell

Nog geen reacties

Reactie plaatsen

Reacties worden na moderatie gepubliceerd.