10 lustige Spiele zum Spielen im Linux-Terminal
Webagentur » Digitale Nachrichten » So finden Sie die PID eines Linux-Prozesses mit pidof oder pgrep

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.

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

Ermitteln der PID einer Bash-Shell mit dem Befehl pidof

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

Listen Sie Prozesse mit dem Befehl ps auf

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

pidof meldet mehrere Übereinstimmungsprozessinstanzen

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

Verwenden von ps und grep, um Besitzer von Bash-Prozessen zu identifizieren

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

pidof finden viele PIDs für eine einzelne Anwendung mit vielen Prozessen

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

Finden Sie die neueste PID aus n Anwendungen mit mehreren PIDs

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

Übergeben Sie eine Variable mit mehreren PIDs an den Kill-Befehl

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

Ermitteln der PID einer Bash-Shell, auf der ein Shell-Skript ausgeführt wird

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

Finden Sie Firefox PID mit verschiedenen Suchindizes

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

Verwenden der Option -l, damit pgrep den Prozessnamen auflistet

Wenn es mehrere Instanzen eines übereinstimmenden Prozesses gibt, werden sie alle aufgelistet.

pgrep-Bash

Listen Sie mehrere PIDs mit pgrep auf

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

Listen Sie die Bash-Prozess-PIDs des Benutzers dave auf

Diesmal sehen wir drei Bash-Prozesse in den Ergebnissen. Der andere wird von verwendet mary.

pgrep bash -u mary

Listen Sie die Bash-Prozess-PIDs von Benutzer Mary auf

Wir können Benutzernamen als kommagetrennte Liste gruppieren.

pgrep bash -u dave,mary -l

Listen Sie die PIDs von Bash-Prozessen von zwei Benutzern auf

Und wir können anfordern, alle Prozesse für einen bestimmten Benutzer anzuzeigen.

pgrep -u dave -l

Alle PIDs auflisten, die zu einem bestimmten Benutzer gehören

Um die vollständige Befehlszeile anzuzeigen, verwenden Sie die -a (vollständige Liste).

pgrep -u dave -a

Verwenden Sie die Option -a, um die gesamte Befehlszeile für jeden Prozess aufzulisten

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.

★ ★ ★ ★ ★