Linux pgrep commando tutorial voor beginners (10 voorbeelden)
Je kent misschien al hetgrep commando in Linux, dat naar een patroon zoekt, en dan de overeenkomende tekst in de uitvoer afdrukt. Wat als de eis is om dit soort bewerking toe te passen om selectieve informatie op te halen over processen die momenteel in het systeem draaien?
Wel, je zult blij zijn te weten dat er een commando-regel gereedschap bestaat – pgrep – waarmee je precies dit kunt doen. In deze zelfstudie zullen we de basis van pgrep bespreken aan de hand van enkele gemakkelijk te begrijpen voorbeelden. Maar voor we dat doen, is het de moeite waard te vermelden dat alle voorbeelden hier getest zijn op een Ubuntu 20.04 LTS machine en op Debian 10.
Linux pgrep commando
Met het pgrep commando in Linux kunnen gebruikers processen opzoeken op basis van naam en andere attributen. Hieronder volgt de syntaxis ervan:
pgrep [options] pattern
En hier is hoe de man pagina van het gereedschap het uitlegt:
pgrep looks through the currently running processes and lists the process IDs which match the
selection criteria to stdout. All the criteria have to match.
Hieronder volgen enkele vraag-antwoord-achtige voorbeelden die je een goed idee moeten geven van hoe het pgrep commando werkt.
Q1. Hoe vind je het ID van een proces dat eigendom is van een bepaalde gebruiker?
Dit kan met de -u command-line optie. Bijvoorbeeld, om het ID te vinden van het ‘gedit’ proces dat eigendom is van gebruiker ‘himanshu’, gebruik je pgrep op de volgende manier:
pgrep -u himanshu gedit
Hier is de uitvoer die dit commando in mijn geval opleverde:
Q2. Hoe kan pgrep telling van overeenkomende processen laten afdrukken?
Voor het geval je wilt dat het gereedschap alleen de telling afdrukt, en niet de ID’s zelf, gebruik je de -c command-line optie. Om bijvoorbeeld de telling te weten van processen die eigendom zijn van gebruiker ‘himanshu,’ voer je het volgende commando uit:
pgrep -c -u himanshu
Hieronder volgt de uitvoer die dit commando op mijn systeem opleverde:
83
Q3. Hoe gebruik je een aangepast scheidingsteken in de uitvoer?
Standaard worden de proces ID’s in uitvoer gescheiden door een nieuwe regel. Als je wilt, kun je het scheidingsteken echter veranderen, iets wat je kunt doen met de -d command-line optie.
Ik wilde bijvoorbeeld een dubbele punt (:) als scheidingsteken gebruiken, dus voerde ik het pgrep commando op de volgende manier uit:
pgrep -u himanshu -d:
En het volgende is de uitvoer die het commando produceerde:
1793:1794:1807:1811:1813:1817:1820:1914:1917:1922:1925:1936:1938:1954:1974:1978:1980:1982:1993:1999
:2008:2009:2012:2020:2024:2034:2036:2043:2048:2049:2051:2052:2055:2064:2068:2073:2074:2085:2088:
2093:2094:2095:2098:2101:2104:2117:2125:2161:2162:2168:2173:2182:2201:2213:2233:2245:2266:2279:
2388:2409:2430:2456:2473:2564:2647:3085:3108:3178:3284:3297:3320:3325:3467:3487:3980:4040:4658:
5668:5721:5777:6271:6281:6512:6808
Q4. Hoe maak je pgrep zoeken hoofdletterongevoelig?
Standaard is het pgrep zoeken hoofdlettergevoelig. Als je wilt, kun je het echter hoofdletterongevoelig maken. Hiervoor moet je de -i commandoregeloptie gebruiken.
Bijvoorbeeld:
pgrep -i gedit
Q5. Hoe kun je pgrep ook procesnamen laten vermelden?
Gebruik hiervoor de -l commandolijn optie.
Hier zie je een voorbeeld:
pgrep -u himanshu -l
Hier is een uittreksel van de uitvoer die op mijn systeem werd geproduceerd:
1793 systemd
1794 (sd-pam)
1807 gnome-keyring-d
1811 gdm-x-session
1813 Xorg
1817 dbus-daemon
1820 gnome-session-b
1914 ssh-agent
1917 gvfsd
1922 gvfsd-fuse
1925 at-spi-bus-laun
1936 dbus-daemon
1938 at-spi2-registr
1954 gnome-shell
1974 ibus-daemon
1978 ibus-dconf
1980 ibus-x11
1982 ibus-portal
1993 gnome-shell-cal
1999 evolution-sourc
2008 dconf-service
2009 gvfs-udisks2-vo
2012 goa-daemon
2020 gvfs-mtp-volume
2024 gvfs-goa-volume
...
...
...
Zo zie je dat behalve proces ID’s ook procesnamen in de uitvoer werden geproduceerd.
Q6. Hoe maak je pgrep list ook volledige commando’s?
Als je wilt dat pgrep het volledige commando toont dat gebruikt werd om elk proces te starten, gebruik dan de -a command-line optie.
pgrep -u himanshu -a
1793 /lib/systemd/systemd --user
1794 (sd-pam)
1807 /usr/bin/gnome-keyring-daemon --daemonize --login
1811 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1813 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
1817 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
1820 /usr/lib/gnome-session/gnome-session-binary --session=ubuntu
1914 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1917 /usr/lib/gvfs/gvfsd
1922 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
1925 /usr/lib/at-spi2-core/at-spi-bus-launcher
1936 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
1938 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
1954 /usr/bin/gnome-shell
1974 ibus-daemon --xim --panel disable
1978 /usr/lib/ibus/ibus-dconf
1980 /usr/lib/ibus/ibus-x11 --kill-daemon
1982 /usr/lib/ibus/ibus-portal
1993 /usr/lib/gnome-shell/gnome-shell-calendar-server
1999 /usr/lib/evolution/evolution-source-registry
2008 /usr/lib/dconf/dconf-service
2009 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
2012 /usr/lib/gnome-online-accounts/goa-daemon
2020 /usr/lib/gvfs/gvfs-mtp-volume-monitor
2024 /usr/lib/gvfs/gvfs-goa-volume-monitor
2034 /usr/lib/gnome-online-accounts/goa-identity-service
2036 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
2043 /usr/lib/gvfs/gvfs-afc-volume-monitor
Q7. Hoe kun je pgrep alleen het nieuwste proces laten weergeven?
Als je wilt dat pgrep in plaats van alle processen alleen het meest recente proces weergeeft, dan kan dat met de -n commandolijnoptie.
Hier is een voorbeeld:
pgrep -u himanshu -n -l
En hieronder volgt de uitvoer die dit commando opleverde:
7163 thunderbird
Ik kan bevestigen dat Thunderbird inderdaad het meest recente proces was dat door de gebruiker ‘himanshu’ werd gestart.
Q8. Hoe kun je pgrep alleen het oudste proces laten weergeven?
Gebruik hiervoor de -o command-line optie.
pgrep -u himanshu -o -l
En hier is de uitvoer die dit commando opleverde:
1793 systemd
Conclusie
Zo zie je dat pgrep een uiterst nuttig commando is. Als je klaar bent met het oefenen van de commandoregeloptie die we hier besproken hebben, kun je naar deman pagina van het hulpmiddel gaan om er meer over te leren.