Ein Prozess ist in der POSIX-Terminologie ein fortlaufendes Ereignis, das vom Kernel eines Betriebssystems verwaltet wird. Ein Prozess wird gestartet, wenn Sie eine Anwendung starten, obwohl viele andere Prozesse im Hintergrund Ihres Computers ausgeführt werden, einschließlich Programme, die Ihre Systemzeit genau halten, auf neue Dateisysteme überwachen, Dateien indizieren und so weiter.
Die meisten Betriebssysteme verfügen über eine Art Systemaktivitätsmonitor, mit dem Sie jederzeit erkennen können, welche Prozesse ausgeführt werden. Linux hat einige zur Auswahl, darunter GNOME System Monitor und KSysGuard. Beides sind nützliche Anwendungen auf dem Desktop, aber Linux bietet auch die Möglichkeit, Ihr System in Ihrem Terminal zu überwachen. Unabhängig davon, für was Sie sich entscheiden, ist es eine häufige Aufgabe für diejenigen, die eine aktive Rolle bei der Verwaltung ihres Computers übernehmen, einen bestimmten Prozess zu untersuchen.
In diesem Artikel zeige ich, wie man die Prozess-ID (PID) eines Programms findet. Die gebräuchlichsten Tools dafür werden vom procps-ng-Paket bereitgestellt, einschließlich der ps
und pstree
, pidof
, und pgrep
Befehle.
Finden Sie die PID eines laufenden Programms
Manchmal möchten Sie die Prozess-ID (PID) einer bestimmten Anwendung abrufen, von der Sie wissen, dass sie ausgeführt wird. Die pidof
und pgrep
Befehle finden Prozesse anhand des Befehlsnamens.
Die pidof
Befehl gibt die PIDs eines Befehls zurück und sucht den genauen Befehl anhand des Namens:
$ pidof bash
1776 5736
Die pgrep
Befehl erlaubt reguläre Ausdrücke (regex):
$ pgrep .sh
1605
1679
1688
1776
2333
5736
$ pgrep bash
5736
Finden Sie eine PID nach Datei
Die PID des Prozesses finden Sie in einer bestimmten Datei mit dem fuser
Befehl.
$ fuser --user ~/example.txt
/home/tux/example.txt: 3234(tux)
Holen Sie sich einen Prozessnamen von PID
Wenn Sie die PID haben Nummer eines Prozesses, aber nicht des Befehls, der ihn hervorgebracht hat, können Sie eine “Reverse-Suche” mit durchführen ps
:
$ ps 3234
PID TTY STAT TIME COMMAND
5736 pts/1 Ss 0:00 emacs
Alle Prozesse auflisten
Die ps
Befehl listet Prozesse auf. Sie können jeden Prozess auf Ihrem System mit dem -e
Möglichkeit:
$ ps -e | less
PID TTY TIME CMD
1 ? 00:00:03 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
6 ? 00:00:00 kworker/0:0H-events_highpri
[...]
5648 ? 00:00:00 gnome-control-c
5656 ? 00:00:00 gnome-terminal-
5736 pts/1 00:00:00 bash
5791 pts/1 00:00:00 ps
5792 pts/1 00:00:00 less
(END)
Listen Sie nur Ihre Prozesse auf
Die Ausgabe von ps -e
kann überwältigend sein, also benutze -U
um die Prozesse nur eines Benutzers anzuzeigen:
$ ps -U tux | less
PID TTY TIME CMD
3545 ? 00:00:00 systemd
3548 ? 00:00:00 (sd-pam)
3566 ? 00:00:18 pulseaudio
3570 ? 00:00:00 gnome-keyring-d
3583 ? 00:00:00 dbus-daemon
3589 tty2 00:00:00 gdm-wayland-ses
3592 tty2 00:00:00 gnome-session-b
3613 ? 00:00:00 gvfsd
3618 ? 00:00:00 gvfsd-fuse
3665 tty2 00:01:03 gnome-shell
[...]
Das erzeugt 200 Prozesse weniger (gib oder nimm hundert, je nachdem, auf welchem System Sie es ausführen) zum Sortieren.
Sie können dieselbe Ausgabe in einem anderen Format mit dem pstree
Befehl:
$ pstree -U tux -u --show-pids
[...]
├─gvfsd-metadata(3921)─┬─{gvfsd-metadata}(3923)
│ └─{gvfsd-metadata}(3924)
├─ibus-portal(3836)─┬─{ibus-portal}(3840)
│ └─{ibus-portal}(3842)
├─obexd(5214)
├─pulseaudio(3566)─┬─{pulseaudio}(3640)
│ ├─{pulseaudio}(3649)
│ └─{pulseaudio}(5258)
├─tracker-store(4150)─┬─{tracker-store}(4153)
│ ├─{tracker-store}(4154)
│ ├─{tracker-store}(4157)
│ └─{tracker-store}(4178)
└─xdg-permission-(3847)─┬─{xdg-permission-}(3848)
└─{xdg-permission-}(3850)
Listen Sie nur Ihre Prozesse mit Kontext auf
Sie können zusätzlichen Kontext für alle Prozesse anzeigen, die Sie besitzen, mit dem -u
Möglichkeit.
$ ps -U tux -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tux 3545 0.0 0.0 89656 9708 ? Ss 13:59 0:00 /usr/lib/systemd/systemd --user
tux 3548 0.0 0.0 171416 5288 ? S 13:59 0:00 (sd-pam)
tux 3566 0.9 0.1 1722212 17352 ? S<sl 13:59 0:29 /usr/bin/pulseaudio [...]
tux 3570 0.0 0.0 664736 8036 ? SLl 13:59 0:00 /usr/bin/gnome-keyring-daemon [...]
[...]
tux 5736 0.0 0.0 235628 6036 pts/1 Ss 14:18 0:00 bash
tux 6227 0.0 0.4 2816872 74512 tty2 Sl+14:30 0:00 /opt/firefox/firefox-bin [...]
tux 6660 0.0 0.0 268524 3996 pts/1 R+ 14:50 0:00 ps -U tux -u
tux 6661 0.0 0.0 219468 2460 pts/1 S+ 14:50 0:00 less
Fehlerbehebung mit PIDs
Wenn Sie Probleme mit einer bestimmten Anwendung haben oder einfach nur wissen möchten, was eine Anwendung auf Ihrem System sonst noch verwendet, können Sie mit eine Speicherzuordnung des laufenden Prozesses anzeigen pmap
:
$ pmap 1776
5736: bash
000055f9060ec000 1056K r-x-- bash
000055f9063f3000 16K r---- bash
000055f906400000 40K rw--- [ anon ]
00007faf0fa67000 9040K r--s- passwd
00007faf1033b000 40K r-x-- libnss_sss.so.2
00007faf10345000 2044K ----- libnss_sss.so.2
00007faf10545000 4K rw--- libnss_sss.so.2
00007faf10546000 212692K r---- locale-archive
00007faf1d4fb000 1776K r-x-- libc-2.28.so
00007faf1d6b7000 2044K ----- libc-2.28.so
00007faf1d8ba000 8K rw--- libc-2.28.so
[...]
Prozess-IDs
Die procps-ng Paket enthält alle Befehle, die Sie benötigen, um zu untersuchen und zu überwachen, was Ihr System zu jedem Zeitpunkt verwendet. Egal, ob Sie nur neugierig sind, wie alle unterschiedlichen Teile eines Linux-Systems zusammenpassen, ob Sie einen Fehler untersuchen oder die Leistung Ihres Computers optimieren möchten, das Erlernen dieser Befehle bietet Ihnen einen erheblichen Vorteil für Verständnis Ihres Betriebssystems.