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.