2.5.8 Prozessmanagement
Übersicht über die Befehle auf dieser Seite (in fett bedeutet prüfungsrelevant):
Befehl | Beispiel | Beschreibung |
---|---|---|
kill | kill 1234 |
Beendet den Prozess mit der PID 1234 |
pkill | pkill name |
Beendet Prozesse anhand ihres Namens |
killall | killall name |
Beendet alle Instanzen eines bestimmten Prozesses |
crontab | crontab -e |
Öffnet den Crontab-Editor zur Planung von Aufgaben |
bg | bg %1 |
Setzt einen angehaltenen Job im Hintergrund fort |
fg | fg %1 |
Holt einen Job in den Vordergrund |
jobs | jobs |
Listet alle aktuellen Jobs auf |
nohup | nohup befehl & |
Führt einen Befehl aus, der gegen Abmeldung immun ist |
Jeder ausgeführte Befehl und jedes laufende Programm führt zu einem Prozess. Prozesse sind die grundlegenden Einheiten in einem Betriebssystem. Wir haben bereits Prozesse angesehen, als wir den Befehl ps aux | grep apache
verwendet haben, um laufende Apache-Prozesse zu finden. Das Prozessmanagement ist wichtig für die Kontrolle und Verwaltung eines Systems, insbesondere wenn viele Programme gleichzeitig ausgeführt werden.
Befehle "kill", "pkill" und "killall"
Der Befehl kill
sendet ein Signal an einen Prozess, um ihn zu beenden.
Der Befehl pkill
beendet Prozesse anhand ihres Namens.
Der Befehl killall
beendet alle Instanzen eines bestimmten Prozesses. Dies ist normalerweise das, was wir benötigen.
Beispiele
kill 1234
: Beendet den Prozess mit der PID 1234 auf normale Art.kill -9 1234
: Erzwingt das Beenden des Prozesses mit der PID 1234.pkill apache2
: Beendet alle Prozesse mit dem Namenapache2
.killall apache2
: Beendet alle Instanzen des Prozessesapache2
.
Zombies
Zombie-Prozesse sind Prozesse, die ihre Ausführung beendet haben, aber deren Prozess-ID (PID) und Eintrag in der Prozess-Tabelle noch nicht von ihrem Elternprozess freigegeben wurden. Diese Einträge bleiben bestehen, bis der Elternprozess die Rückmeldung (Exit-Status) des beendeten Prozesses abruft. Zombies verbrauchen keine CPU-Ressourcen, können aber die Anzahl der verfügbaren PIDs auf einem System reduzieren. Um Zombie-Prozesse zu entfernen, muss oft der Elternprozess beendet werden, sodass der init-Prozess (PID 1) die Kontrolle übernimmt und die Zombie-Prozesse bereinigt.
Wie viele Prozesse können unter Linux laufen?
Die maximale Anzahl an Prozessen, die auf einem Linux-System laufen können, wird durch die kernel.pid_max
Einstellung im Kernel gesteuert. Diese Einstellung kann durch den Befehl cat /proc/sys/kernel/pid_max
überprüft werden. In der Regel ist dieser Wert hoch genug, um die Bedürfnisse der meisten Systeme zu decken, aber er kann bei Bedarf angepasst werden. Änderungen an dieser Einstellung erfordern in der Regel einen Neustart des Systems oder das Laden eines neuen Kernel-Moduls.
Befehle "crontab", "bg", "fg" und "nohup"
Prozesse können im Vordergrund oder im Hintergrund ausgeführt werden. Vordergrundprozesse blockieren das Terminal, bis sie abgeschlossen sind, während Hintergrundprozesse das Terminal nicht blockieren, sodass andere Befehle eingegeben werden können.
Der Befehl crontab
plant Aufgaben (also Prozesse) zur Ausführung zu festgelegten Zeiten oder in regelmäßigen Intervallen.
Der Befehl bg
setzt einen angehaltenen Job im Hintergrund fort.
Der Befehl fg
holt einen Job in den Vordergrund.
Der Befehl nohup
führt einen Befehl aus, der gegen Abmeldung immun ist. Wenn man also das Terminalfenster schließt, dann läuft der Prozess weiter.
Beispiele
crontab -e
: Öffnet den Crontab-Editor zur Planung von Aufgaben.bg %1
: Setzt den Job mit der ID 1 im Hintergrund fort.fg %1
: Holt den Job mit der ID 1 in den Vordergrund.nohup grep 'Error' /var/log/syslog > errors.txt &
: Führt den Befehlgrep
im Hintergrund aus und leitet die Ergebnisse in die Dateierrors.txt
um, ohne dass der Prozess bei Abmeldung beendet wird.