Linux pgrep Befehl Tutorial für Anfänger (10 Beispiele)

Möglicherweise kennen Sie bereits den Befehl grep unter Linux, der nach einem Muster sucht und dann den passenden Text in der Ausgabe ausgibt. Was wäre, wenn die Anforderung darin besteht, diese Art der Verarbeitung anzuwenden, um ausgewählte Informationen über Prozesse zu erhalten, die derzeit im System laufen?

Nun, du wirst froh sein zu wissen, dass es ein Kommandozeilenprogramm – pgrep – gibt, mit dem du genau das tun kannst. In diesem Tutorial werden wir die Grundlagen von pgrep anhand einiger leicht verständlicher Beispiele diskutieren. Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele hier auf einer Ubuntu 18.04 LTS Maschine getestet wurden.

Linux pgrep Befehl

Mit dem Befehl pgrep unter Linux können Benutzer Prozesse anhand von Namen und anderen Attributen nachschlagen. Folgendes ist seine Syntax:

pgrep [options] pattern

Und so erklärt es die Man Page des Tools:

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.

Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine gute Vorstellung davon vermitteln sollen, wie der Befehl pgrep funktioniert.

Q1. Wie kann man die ID eines Prozesses finden, der einem bestimmten Benutzer gehört?

Dies kann mit der Kommandozeilenoption -u erfolgen. Um beispielsweise die ID des Prozesses’gedit‘ zu finden, der dem Benutzer’himanshu‘ gehört, verwenden Sie pgrep auf folgende Weise:

pgrep -u himanshu gedit

Hier ist die Ausgabe dieses Befehls, die in meinem Fall erzeugt wurde:

Q2. Wie kann pgrep print die Anzahl der übereinstimmenden Prozesse ermitteln?

Wenn Sie möchten, dass das Tool nur den Zähler und nicht die IDs selbst ausgibt, verwenden Sie die Befehlszeilenoption -c. Um beispielsweise die Anzahl der Prozesse zu ermitteln, die dem Benutzer’himanshu‘ gehören, führen Sie den folgenden Befehl aus:

pgrep -c -u himanshu

Es folgt die Ausgabe dieses Befehls auf meinem System:

83

Q3. Wie kann man ein benutzerdefiniertes Trennzeichen in der Ausgabe verwenden?

Standardmäßig werden die Prozess-IDs in der Ausgabe durch eine neue Zeile begrenzt. Wenn du möchtest, kannst du jedoch das Trennzeichen ändern, was du mit der Kommandozeilenoption -d tun kannst.

Zum Beispiel wollte ich einen Doppelpunkt (:) als Trennzeichen verwenden, also habe ich den Befehl pgrep wie folgt ausgeführt:

pgrep -u himanshu -d:

Und im Anschluss erfolgt die Ausgabe des Befehls:

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. Wie macht man pgrep search case unempfindlich?

Standardmäßig ist die pgrep-Suche case-sensitiv. Wenn Sie jedoch möchten, können Sie die Groß-/Kleinschreibung unempfindlich machen. Dazu musst du die Kommandozeilenoption -i verwenden.

Zum Beispiel:

pgrep -i gedit

Q5. Wie kann man erreichen, dass pgrep auch Prozessnamen auflistet?

Verwenden Sie dazu die Kommandozeilenoption -l.

Hier ist ein Beispiel:

pgrep -u himanshu -l

Hier ist ein Auszug aus der auf meinem System erzeugten Ausgabe:

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
...
...
...

So können Sie sehen, dass neben den Prozess-IDs auch Prozessnamen in der Ausgabe ausgegeben wurden.

Q6. Wie kann man pgrep list auch zum vollständigen Befehl machen?

Wenn Sie möchten, dass pgrep den vollständigen Befehl anzeigt, mit dem jeder Prozess gestartet wurde, verwenden Sie die Befehlszeilenoption -a.

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. Wie kann man erreichen, dass pgrep nur den neuesten Prozess anzeigt?

Wenn Sie möchten, dass pgrep anstelle aller Prozesse nur den aktuellsten Prozess ausgibt, können Sie dies mit der Befehlszeilenoption -n tun.

Hier ist ein Beispiel:

pgrep -u himanshu -n -l

Und nachfolgend ist die Ausgabe, die dieser Befehl erzeugt hat:

7163 thunderbird

Ich kann bestätigen, dass Thunderbird tatsächlich der jüngste Prozess war, der vom Benutzer „himanshu“ gestartet wurde.

Q8. Wie kann man erreichen, dass pgrep nur den ältesten Prozess anzeigt?

Verwenden Sie dazu die Kommandozeilenoption -o.

pgrep -u himanshu -o -l

Und hier ist die Ausgabe, die dieser Befehl erzeugt hat:

1793 systemd

Fazit

So kannst du sehen, dass pgrep ein äußerst hilfreicher Befehl ist. Sobald Sie mit dem Üben der Befehlszeilenoption, die wir hier besprochen haben, fertig sind, können Sie zur Man Page des Tools gehen, um mehr darüber zu erfahren.

Das könnte dich auch interessieren …