Was sind Unix-PIDs und wie funktionieren sie??

Inhalt

Auf einem Linux-System erstellter Prozess.

Immer wenn eine Prozedur auf einem Linux-System erstellt wird, es wird eine neue Nummer zugewiesen, die es gegenüber anderen Anwendungen identifiziert. Dies ist die Verfahrens-ID, o PID, und wird systemweit verwendet, um laufende Prozesse zu verwalten.

So funktionieren Prozesse unter Linux

Die erste Prozedur, die Linux ausführt, heißt systemd, Empfangen von PID 0. Alle anderen Prozesse werden als Kinder von . generiert systemd. Die ersten paar werden im Allgemeinen Low-Level-Linux-Dinge sein, um die Sie sich keine Sorgen machen müssen, aber weiter unten am Baum, Das System beginnt mit dem Starten von Prozessen auf Benutzerebene wie MySQL und Nginx.

Jedes Verfahren hat auch eine PPID, die die PID des übergeordneten Elements speichert, mit dem die Prozedur erstellt wurde. Es gibt auch einen Prozess TTY, die die ID des Terminals speichert, mit dem Sie den Vorgang gestartet haben, y UID, die die ID des Benutzers speichert, der sie erstellt hat. Jedes Verfahren, bei dem generell ein TTY fehlt, wird aufgerufen Teufel, eine Definition, die verwendet wird, um Systemprozesse zu bezeichnen, die im Hintergrund laufen und kein Bedienterminal haben.

Immer wenn ein Verfahren abgeschlossen ist, dass PID für die Verwendung durch ein anderes Verfahren aktiviert ist. Jedes Verfahren wird auch mit einem Exit-Code abgeschlossen, die im Allgemeinen verwendet wird, um anzuzeigen, ob ein Fehler aufgetreten ist oder nicht. Der Exit-Code 0 es ist ein sauberer Ausgang, alles größere ist ein spezifischer fehler.

Eine eher technische Anmerkung, PIDs sind ein wichtiger Bestandteil von Linux-Namespaces. Namespaces verbergen bestimmte Teile des Systems vor Prozessen, die in verschiedenen Namespaces laufen, was Containerisierungstools wie Docker antreibt. Mit Namensräumen, der PID-Baum wird an einem bestimmten Ast geschnitten, und nur dieser Zweig wird an das containerisierte Verfahren geliefert. Dieser Zweig startet neu von der PID 1, der Container sieht also so aus, als würde er auf einer brandneuen Linux-Installation laufen.

Visualisierungsprozesse

Für eine vollständige Liste der Prozesse, kann das laufen lassen ps Befehl:

sudo ps -e

Dadurch wird eine sehr lange Liste aller laufenden Prozesse generiert, was sicherlich etwas schwierig zu navigieren ist.

Eine vollständige Liste der Prozesse.

Sie können die Ergebnisse filtern, indem Sie die Ausgabe an . weiterleiten grep, Was ps hat keine eingebaute Suchfunktion:

sudo ps -e | grep "Vorgangsname"

Auch wenn Sie davor gewarnt werden sollten, merkwürdigerweise, das passt auch zum neu erstellten grep Prozess, Was ps Befehlsargumente anzeigen, die Ihre passende Zeichenfolge enthalten, was offensichtlich zu sich passt. Wenn Sie nur die PID eines bestimmten Prozedurnamens benötigen, das pgrep Der Befehl gibt nur die PID zurück und sonst nichts.

Ein viel nützlicherer Viewer ist der top Befehl, der als Task-Manager von Ihrem Terminal aus fungiert. Zeigt alle Prozesse sortiert nach CPU-Auslastung an, sowie einige allgemeine Systemstatistiken:

Der Befehl Top zeigt alle Prozesse sortiert nach CPU-Auslastung, sowie einige allgemeine Systemstatistiken.

Wenn Sie einen Linux-Desktop ausführen, hier werden auch die Anwendungen angezeigt, die gerade laufen, obwohl die meisten Anwendungen Multithreading sind, Daher füllt Google Chrome diese Liste auf, die in mehreren Prozessen mit unterschiedlichen PIDs ausgeführt wird.

Prozesse stoppen

Realistisch sein, wird mit dem eigentlichen Verfahren nicht viel anfangen, außer es herunterzufahren, da Sie die Erstellung des Verfahrens nicht verwalten müssen. (Wird automatisch verarbeitet, wenn Sie einen Befehl oder ein Skript ausführen). Der Befehl dazu heißt kurz und bündig kill, die eine gegebene PID nimmt und diese Prozedur schließt:

sudo töten 40589

Zusätzlich können Sie alle Prozesse mit einem bestimmten Namen beenden, indem Sie die killall Befehl. Als Beispiel, um etwas RAM in Ihrem System freizugeben, ausführen können:

sudo killall chrom

Offensichtlich, Dies ist nicht der beste Weg, um Desktop-Anwendungen zu schließen, aber die meisten Prozesse werden nicht viel Aufhebens machen, wenn sie auf diese Weise geschlossen werden.

Trotz dieses, wenn das Verfahren ein Linux-Dienst ist, Sie werden die verwenden wollen service Befehl, damit zu interagieren. Als Beispiel, nginx neu laden:

service nginx neu laden

Oder schalte es aus:

service nginx stoppen

PID-Dateien

Eine Prozedur-ID identifiziert eine Prozedur nur eindeutig, während diese ausgeführt wird. Wenn Sie Nginx neu starten müssen, es ist möglich, dass ihm eine neue Prozedur-ID zugewiesen wird.

Hier kommen PID-Dateien ins Spiel; sie sind eine Form der Kommunikation zwischen Prozessen, im Wesentlichen eine Datei, die die aktuelle PID einer bestimmten Prozedur speichert. Ein anderes Verfahren kann diese Datei lesen und von Natur aus wissen, als Beispiel, Was ist die PID von MySQL?. Wenn MySQL startet, Schreiben Sie Ihre eigene PID in diese Datei, damit das gesamte System sie sehen kann.

Im Allgemeinen, PID-Dateien werden gespeichert in /var/run/, Auch wenn dies nur gängige Praxis und keine Voraussetzung ist, ähnlich der Speicherung von Logfiles in /var/log/.

Die meisten Prozesse mit PID-Dateien laufen auch gleichzeitig, was wird mit Hilfe von Sperrdateien gemacht. Lock-Dateien sind eine Möglichkeit, ein Flag zu bestimmen, das es nur einer Prozedur erlaubt, gleichzeitig zu starten. Wenn eine Prozedur wie Nginx gestartet wird, prüft, ob die Sperrdatei existiert und, Wenn dies nicht der Fall ist, wird normal starten. Aber wenn es schon da ist, Nginx gibt einen Fehler aus und verweigert den Start.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.