GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

Möglicherweise kennen Sie bereits den grep-Befehl in Linux, der nach einem Muster sucht und dann den passenden Text in der Ausgabe ausgibt. Was ist, wenn die Anforderung darin besteht, diese Art der Verarbeitung anzuwenden, um ausgewählte Informationen über Prozesse abzurufen, die derzeit im System ausgeführt werden?

Nun, es wird Sie freuen zu hören, dass es ein Befehlszeilentool gibt - pgrep - damit können Sie genau das tun. 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 einem Ubuntu 20.04 LTS-Rechner und auf Debian 10 getestet wurden.

Linux-pgrep-Befehl

Mit dem pgrep-Befehl in Linux können Benutzer Prozesse basierend auf Namen und anderen Attributen suchen. Es folgt die Syntax:

pgrep [options] pattern

Und so erklärt es die Manpage 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 finde ich die ID eines Prozesses, der einem bestimmten Benutzer gehört?

Dies kann mit der Befehlszeilenoption -u erfolgen. Um beispielsweise die ID des „gedit“-Prozesses zu finden, der dem Benutzer „himanshu“ gehört, verwenden Sie pgrep wie folgt:

pgrep -u himanshu gedit

Hier ist die Ausgabe, die dieser Befehl in meinem Fall erzeugt hat:

Q2. Wie kann man pgrep print dazu bringen, übereinstimmende Prozesse zu zählen?

Falls Sie möchten, dass das Tool nur die Anzahl und nicht die IDs selbst ausgibt, verwenden Sie die Befehlszeilenoption -c. Um beispielsweise die Anzahl der Prozesse zu erfahren, die dem Benutzer „himanshu“ gehören, führen Sie den folgenden Befehl aus:

pgrep -c -u himanshu

Es folgt die Ausgabe, die dieser Befehl auf meinem System erzeugt:

83

Q3. Wie verwende ich ein benutzerdefiniertes Trennzeichen in der Ausgabe?

Standardmäßig werden die Prozess-IDs in der Ausgabe durch einen Zeilenumbruch getrennt. Wenn Sie möchten, können Sie jedoch das Trennzeichen ändern, was Sie mit der Befehlszeilenoption -d tun können.

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

pgrep -u himanshu -d:

Und das Folgende ist die Ausgabe, die der Befehl erzeugt hat:

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 die pgrep-Suche unempfindlich gegenüber Groß- und Kleinschreibung?

Standardmäßig wird bei der pgrep-Suche zwischen Groß- und Kleinschreibung unterschieden. Wenn Sie möchten, können Sie die Groß- und Kleinschreibung jedoch ignorieren. Dazu müssen Sie die Befehlszeilenoption -i verwenden.

Zum Beispiel:

pgrep -i gedit

F5. Wie kann man pgrep dazu bringen, auch Prozessnamen aufzulisten?

Verwenden Sie dazu die Befehlszeilenoption -l.

Hier ist ein Beispiel:

pgrep -u himanshu -l

Hier ist ein Auszug 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
...
...
...

Sie können also sehen, dass neben Prozess-IDs auch Prozessnamen in der Ausgabe erzeugt wurden.

F6. Wie macht man auch den Befehl pgrep list full?

Falls Sie möchten, dass pgrep den vollständigen Befehl anzeigt, der zum Starten jedes Prozesses verwendet 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 pgrep dazu bringen, nur den neuesten Prozess anzuzeigen?

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

Hier ist ein Beispiel:

pgrep -u himanshu -n -l

Und das Folgende ist die Ausgabe, die dieser Befehl erzeugt hat:

7163 thunderbird

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

Q8. Wie bringt man pgrep dazu, nur den ältesten Prozess anzuzeigen?

Verwenden Sie dazu die Befehlszeilenoption -o.

pgrep -u himanshu -o -l

Und hier ist die Ausgabe dieses Befehls:

1793 systemd

Schlussfolgerung

Sie können also sehen, dass pgrep ein äußerst hilfreicher Befehl ist. Wenn Sie mit dem Üben der hier besprochenen Befehlszeilenoption fertig sind, können Sie zur Manpage des Tools gehen, um mehr darüber zu erfahren.


Linux
  1. Linux-CD-Befehls-Tutorial für Anfänger (8 Beispiele)

  2. Linux-Kommando-Tutorial für Anfänger (5 Beispiele)

  3. Linux-df-Befehls-Tutorial für Anfänger (8 Beispiele)

  4. Linux Date Command Tutorial für Anfänger (8 Beispiele)

  5. Linux-Hostname-Befehls-Tutorial für Anfänger (5 Beispiele)

Linux Who Command Tutorial für Anfänger (8 Beispiele)

Linux nl Command Tutorial für Anfänger (7 Beispiele)

Linux-nm-Befehls-Tutorial für Anfänger (10 Beispiele)

Linux OD Command Tutorial für Anfänger (6 Beispiele)

Linux w Command Tutorial für Anfänger (5 Beispiele)

Linux ss Command Tutorial für Anfänger (8 Beispiele)