Unix / Linux - Prozessenverwaltung
Hallo, angehende Programmierer! Heute machen wir uns auf eine aufregende Reise in die Welt der Unix/Linux-Prozesse. Als Ihr freundlicher Nachbarschaftsinformatiklehrer freue ich mich darauf, Sie durch dieses grundlegende Konzept zu führen. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind – wir beginnen mit den Grundlagen und arbeiten uns nach oben. Also, holen Sie sich eine Tasse Kaffee (oder Tee, wenn das mehr Ihr Ding ist) und tauchen wir ein!
Was ist ein Prozess?
Bevor wir beginnen, lassen Sie uns verstehen, was ein Prozess überhaupt ist. Stellen Sie sich eine quirlige Küche vor. Jeder Koch, der an einem bestimmten Gericht arbeitet, kann als Prozess betrachtet werden. Sie haben ihre eigenen Zutaten (Ressourcen), ein Rezept (Programm) und ein Ziel (Ausgabe). In der Computerwelt ist ein Prozess einfach ein Programm, das ausgeführt wird.
Einen Prozess starten
Ein Prozess in Unix/Linux zu starten, ist so einfach wie ein Pie! Sie können es auf zwei Hauptwegen tun:
- Vordergrundprozess: Geben Sie den Befehl ein und drücken Sie die Eingabetaste.
- Hintergrundprozess: Fügen Sie ein Ampersand (&) an das Ende des Befehls hinzu.
Schauen wir uns einige Beispiele an:
# Vordergrundprozess
$ ls -l
# Hintergrundprozess
$ long_running_command &
Im ersten Beispiel wird ls -l
im Vordergrund ausgeführt und zeigt Ihnen den Inhalt des Verzeichnisses. Im zweiten Beispiel wird der Befehl im Hintergrund ausgeführt, allowing Ihnen, die Terminal weiter zu benutzen.
Lauffähige Prozesse auflisten
Was ist, wenn Sie alle Köche (Prozesse) in Ihrer Küche (System) sehen wollen? Dann kommt der ps
-Befehl ganz gelegen!
$ ps aux
Dieser Befehl zeigt Ihnen alle laufenden Prozesse. Es ist, als ob Sie in jede Ecke Ihrer Küche schauen!
Hier ist eine Aufschlüsselung dessen, was Sie sehen werden:
Spalte | Beschreibung |
---|---|
USER | Besitzer des Prozesses |
PID | Prozess-ID |
%CPU | CPU-Auslastung |
%MEM | Speicherauslastung |
VSZ | Virtueller Speicher |
RSS | Resident Set Size |
TTY | Terminal-Typ |
STAT | Prozesszustand |
START | Startzeit |
TIME | CPU-Zeit |
COMMAND | Befehlsname |
Prozesse beenden
Manchmal kann ein Prozess aus dem Ruder laufen (wie ein Koch, der alles verbrennt). In如此 Fällen müssen Sie ihn stoppen. So geht's:
$ kill PID
Ersetzen Sie PID durch die Prozess-ID, die Sie beenden möchten. Wenn Sie besonders rigoros sein möchten, können Sie auch verwenden:
$ kill -9 PID
Das ist wie das sofortige Entlassen des Kochs – eine starke Beendigung!
Eltern- und Kindprozesse
In Unix/Linux haben Prozesse eine Familiengeschichte. Wenn ein Prozess einen anderen Prozess erstellt, wird er zum Elternteil, und der neue Prozess ist sein Kind. Es ist wie ein Küchenchef (Elternprozess), der Aufgaben an Sous-Chefs (Kindprozesse) vergibt.
Sie können diese Beziehung mit folgendem Befehl sehen:
$ pstree
Dieser Befehl zeigt Ihnen den Prozessbaum, der die Eltern-Kind-Beziehungen darstellt.
Zombie- und Waisenprozesse
Nun sprechen wir über einige besondere Arten von Prozessen:
-
Zombie-Prozess: Ein Kindprozess, der die Ausführung beendet hat, aber immer noch einen Eintrag in der Prozesstabelle hat. Es ist wie ein Koch, der sein Gericht beendet hat, aber noch nicht ausgestiegen ist.
-
Waisenprozess: Ein Prozess, dessen Elternprozess beendet oder beendet wurde, aber er läuft noch. Stellen Sie sich einen Sous-Chef vor, der noch arbeitet, nachdem der Küchenchef nach Hause gegangen ist.
Um zu sehen, ob Sie irgendwelche Zombie-Prozesse haben, können Sie verwenden:
$ ps aux | grep Z
Daemon-Prozesse
Daemon-Prozesse sind wie das Küchenpersonal, das rund um die Uhr arbeitet. Sie laufen im Hintergrund und bieten verschiedene Dienste an. Zum Beispiel hört der sshd
-Daemon auf eingehende SSH-Verbindungen.
Um alle Daemon-Prozesse aufzulisten, können Sie verwenden:
$ ps -eo 'tty,pid,comm' | grep ^?
Der top
-Befehl
Der top
-Befehl ist Ihr Alles-in-One-Küchenmonitor. Er bietet eine dynamische Echtzeitansicht des laufenden Systems. So verwenden Sie es:
$ top
Sie sehen eine Tabelle, die ähnlich wie ps
aussieht, aber sie wird in Echtzeit aktualisiert. Es ist, als ob Sie ein Live-Feed Ihrer Küche hätten!
Job-ID gegenüber Prozess-ID
Schließlich klären wir den Unterschied zwischen Job-ID und Prozess-ID:
- Prozess-ID (PID): Eine eindeutige Kennung für jeden Prozess im System.
- Job-ID: Eine von der Shell zugewiesene Nummer für einen im Hintergrund gestarteten Prozess.
Sie können Job-IDs mit folgendem Befehl sehen:
$ jobs
Und Sie können einen Hintergrundjob in den Vordergrund bringen, indem Sie verwenden:
$ fg %job_id
Denken Sie daran, dass Job-IDs spezifisch für Ihre aktuelle Shell-Sitzung sind, während PIDs systemweit gelten.
Und das war's, Leute! Wir haben die Grundlagen der Unix/Linux-Prozessverwaltung abgedeckt. Erinnern Sie sich daran, dass Übung den Meister macht, also zögern Sie nicht, diese Befehle auf Ihrem System auszuprobieren. Seien Sie nur vorsichtig mit dem kill
-Befehl – wir wollen keine versehentlichen Beendigungen in unserer Küche!
Als wir uns abschließen, erinnere ich mich an ein komisches Ereignis aus meinen frühen Tagen des Unterrichtens. Ich habe einmal versehentlich meinen Texteditor-Prozess mit dem kill
-Befehl beendet, während ich den Befehl demonstrierte, und habe eine Stunde lang ungespeicherte Arbeit verloren. Lassen Sie das eine Lektion sein – speichern Sie Ihre Arbeit, bevor Sie mit Prozessen herumspielen!
Behalten Sie die Prozesse am Köcheln und viel Spaß beim Computing!
Credits: Image by storyset