So finden Sie die PID eines Linux-Prozesses mit pidof oder pgrep
Um die Prozess-ID eines Linux-Prozesses zu finden, verwenden Sie den pidof-Befehl wie folgt: „pidof examplename“. Wenn Sie nur einen Teil des PID-Namens kennen, können Sie stattdessen „pgrep examplenamefragment“ verwenden. Ersetzen Sie „Beispielname“ und „Beispielnamefragment“ durch die Begriffe, nach denen Sie suchen möchten.
Die Arbeit mit einem Linux-Prozess bedeutet oft, seine Prozess-ID oder PID zu kennen. Dies ist eine eindeutige Nummer, die jeder laufenden Software zugewiesen wird. Hier sind zwei Möglichkeiten, um herauszufinden, was es ist.
Zusammenfassung
Was ist eine Linux-Prozess-ID?
Intern verfolgt Linux seine laufenden Prozesse, indem es ihnen eine eindeutige Identifikationsnummer zuweist, die als Prozess-ID oder PID bezeichnet wird. Jede laufende Anwendung, jedes Dienstprogramm und jeder Daemon hat eine PID.
PIDs sind einfache ganzzahlige Werte. Ein neu gestarteter Prozess erhält eine PID, die um eins größer ist als die zuletzt ausgegebene PID. Somit ist der Prozess mit der höchsten PID der jüngste Prozess, dh der zuletzt gestartete. Dies wird fortgesetzt, bis das System den Maximalwert für eine PID erreicht.
Die Obergrenze für eine PID ist 32768. Sobald diese Zahl erreicht ist, geht Linux wieder nach oben und sucht nach einer PID, die frei geworden ist, weil der Prozess, dem sie zuvor gehörte, beendet wurde.
Der Prozess mit einer PID von 1 ist der erste Prozess, der gestartet wird, wenn Linux durch Boot-Prozesse gestartet wird. Auf systemd-basierten Systemen wird das sein systemd
. Auf anderen Systemen ist das wahrscheinlich init
obwohl einige Linux-Distributionen Alternativen wie OpenRc oder s6 verwenden.
Manchmal ist es nützlich, die PID eines Prozesses herauszufinden, normalerweise, weil Sie eine Aktion für diesen Prozess ausführen möchten. Hier sind zwei verschiedene Möglichkeiten, die PID eines Prozesses zu finden, wenn Sie die kennen Name des Prozesses.
So erhalten Sie eine Linux-PID mit dem Befehl pidof
La pidof
Den Befehl kann man sich als Kombination aus „PID“ und „de“ vorstellen. Es ist, als würde man fragen, was die PID dieses Prozesses ist. Wenn wir den Befehl ohne Parameter verwenden, tut er nichts. Sie kehren automatisch zur Eingabeaufforderung zurück. Wir müssen einen Prozessnamen angeben.
Pidof-Bash
pidof
sagt uns, dass die PID der Bash-Shell 8304 ist. Wir können dies mit überprüfen ps
bestellt. Wir müssen nur anrufen ps
ohne Parameter. Es meldet die Prozesse, die in der aktuellen Sitzung ausgeführt werden.
ps
Auto ps
Berichte über alle Prozesse, die es finden kann, einschließlich sich selbst, sagt uns, dass es einen gibt bash
Prozess und a ps
laufenden Prozess. Wie man erwarten könnte, die bash
Prozess hat die gleiche PID wie pidof
gemeldet.
Wenn mehrere Terminalfenster geöffnet sind, pidof
wird alles berücksichtigen.
Pidof-Bash
Beachten Sie, dass die PIDs vom höchsten zum niedrigsten oder mit anderen Worten vom neuesten zum ältesten aufgelistet sind.
Was dies nicht zeigt, ist, dass Sie möglicherweise nicht alle diese Prozesse besitzen. pidof
findet alle Prozesse mit übereinstimmenden Namen, unabhängig vom Eigentümer. Lassen Sie uns einen genaueren Blick darauf werfen, indem wir die Ausgabe in weiterleiten grep
. Wir nehmen das -e
(alle Prozesse auswählen) und die -f
(vollständige Liste) Optionen mit ps
.
ps -ef | grep bash
Zwei der Bash-Prozesse gehören dem Benutzer dave, der dritte gehört dem Benutzer mary.
Manchmal bringt eine Anwendung viele Prozesse hervor, von denen jeder seine eigene PID erhält. Das bekommen wir mit Google Chrome.
pidof chrom
Standardmäßig pidof
Berichte über alle Prozesse. Wenn wir möchten, können wir nur die neuesten dieser Prozesse anfordern. Das -s
(Single Take) macht genau das.
pidof -s chrome
So verwenden Sie die kill
Befehl, alle manuell zu töten chrome
die Prozesse wären langwierig. Wenn wir die Liste der Prozesse in einer Variablen erfassen, können wir diese Variable an die übergeben kill
bestellt. Das kill
Der Befehl kann mehrere PIDs auf seinen Befehl akzeptieren, also akzeptiert er gerne unsere Eingaben und beendet alle Prozesse für uns.
pid=$(pidof Chrom)
echo $pid
töte $pid
pidof chrom
Der erste Befehl sammelt die Ausgabe von pidof
und weisen Sie es unserer Variablen zu, die wir benennen pid
. Wir brauchen nicht echo
Auf dem Bildschirm tun wir dies nur, um zu zeigen, was unsere Variable enthält.
Wir übergeben die Variable an kill
Befehl, dann verwenden pidof
erneut, um zu prüfen, ob noch Chrome-Prozesse übrig sind. Sie wurden alle getötet.
Eine Macke von pidof
ist, dass es nicht die PID eines Shell-Skripts zurückgibt. Es gibt die PID der zurück bash
Shell, die das Skript ausführt. Um die Shell zu sehen, die ein Skript ausführt, müssen wir die verwenden -x
(Szenarien).
pidof -x sleep-loop.sh
ps-e | grep bash
pidof
gibt die PID einer Bash-Shell zurück, und ps
zeigt uns, dass zwei Shells laufen. Eine davon ist die Shell, auf der die ausgeführt wird pidof
Befehl, und die andere ist die Shell, auf der das Skript ausgeführt wird.
So finden Sie PIDs mit dem pgrep-Befehl in Linux
La pgrep
Befehl funktioniert ähnlich wie pidof
um Prozess-IDs in Linux zu erhalten. Es findet jedoch nicht nur Prozesse, die genau zum Suchindex passen, sondern gibt auch die PIDs aller Prozesse zurück, deren Namen enthält der Suchtext.
Hier ist ein Beispiel auf einem Computer mit Firefox.
pgrep Firefox
pgrepfire
pgrepfox
pgrep ref
Alle diese Befehle finden den Firefox-Prozess und geben die PID zurück. Aber wenn Sie den Befehl eingegeben hätten:
pgrep ref
Wie würden Sie allein wissen, ob pgrep Fi gefunden hatRefox und nicht etwa ein Dämon namens pReformMaryland?
Wenn Sie das hinzufügen -l
(Listenname) listet pgrep den Prozessnamen neben der PID auf.
pgrep refo -l
Wenn es mehrere Instanzen eines übereinstimmenden Prozesses gibt, werden sie alle aufgelistet.
pgrep-Bash
Beachten Sie, dass sie in aufsteigender Reihenfolge aufgelistet sind, was die umgekehrte Reihenfolge der Ausgabe von ist pidof
. Sie werden vom ältesten Prozess zum neuesten Prozess aufgelistet. Wie wir mit gesehen haben pidof
nicht alle aufgelisteten Prozesse sind notwendigerweise Ihr Eigentum.
La -u
(Benutzer-ID) können Sie nach Prozessen suchen, die dem Suchtext entsprechen und dem benannten Benutzer gehören.
pgrep bash -u dave
Diesmal sehen wir drei Bash-Prozesse in den Ergebnissen. Der andere wird von verwendet mary
.
pgrep bash -u mary
Wir können Benutzernamen als kommagetrennte Liste gruppieren.
pgrep bash -u dave,mary -l
Und wir können anfordern, alle Prozesse für einen bestimmten Benutzer anzuzeigen.
pgrep -u dave -l
Um die vollständige Befehlszeile anzuzeigen, verwenden Sie die -a
(vollständige Liste).
pgrep -u dave -a
Ein Wort zur PID-Eigenschaft
Nicht alle Systemprozesse gehören dem Root-Benutzer. Viele sind es natürlich, aber nicht alle. Dieser Befehl funktioniert zum Beispiel:
pgrep Avahi-Daemon
Aber dieser Befehl schlägt fehl.
pgrep -u root Avahi-Daemon
Es scheitert, weil root
besitzt diesen Prozess nicht. Der wirkliche Eigentümer ist ein Systembenutzer namens "avahi". Mit dem richtigen Benutzernamen funktioniert der Befehl.
pgrep -u avahi Avahi-Daemon
Es ist eine Kleinigkeit, auf die man achten sollte.