Prozesse
 

Definition
Ein Prozess stellt ein laufendes Programm dar, besteht also nicht nur aus dem Programmcode, sondern umfasst auch dessen Daten und diverse Verwaltungsinformationen, auch als "Kontext" bezeichnet. Linux ist ein Multitasking-System, daher können verschiedene Prozesse gleichzeitig ablaufen.

Informationen über Prozesse
Informationen welcher Prozess mit welcher Nummer gerade läuft, liefert der Befehl ps.
ps
= process status
Ohne Optionen werden alle auf dem derzeitigen Terminal laufenden Prozesse angezeigt mit Prozessnummer (PID), dem Terminal (TTY), der verwendeten Rechenzeit (TIME), sowie dem Kommando (CMD). Ausführlicher wirds mit
# ps -l
Möchte man alle laufenden Prozesse anzeigen hilft
# ps -A
noch ausführlicher mit Prozess-Status wirds mit
# ps ax
Ein Prozess kann auch Kindprozesse erzeugen, die einen Verweis auf ihren Erzeuger enthalten. Welcher Prozess welche Kindprozesse gestartet hat, zeigt
# pstree -p Benutzer
Die Option -p zeigt die Prozessnummer mit an.

Prozesse beeinflussen
Neben den Tastatur-Befehlen STRG-c (zum beenden) und STRG-d (zum anhalten/pausieren) die ja nur auf der Konsole ausgeführt werden können, von dem der Prozess auch gestartet wurde, gibt es noch einen Konsolen-Befehl namens kill.
Syntax = kill -Signal Prozessnummer
Ein Beispiel:
# ps -A | grep firefox
3777 ? 00:00:01 firefox-bin

zeigt, daß der Prozess firefox-bin (welcher zum Programm iceweasel gehört) die Prozessnummer 3777 hat. Ein simples
# kill 3777
beendet den Prozess und damit das Programm. Ohne Signalangabe wird automatisch SIGTERM (15) verwendet, welches das Programm firefox "normal" beendet.
Sollte das Programm auf den Abbruch nicht reagieren, hilft
# kill -SIGKILL 3777
oder
# kill -9 3777
Damit wird der Prozess rigoros beendet weil der laufende Prozess es nicht ignorieren kann. Es sei denn es handelt sich um einen sogenannten Zombie-Prozess, denn der ist ja schon mal gestorben und kann deswegen nicht nochmal umgebracht werden. Oder weil der Prozess auf einen blockierten Systemaufruf wartet, z.B. eine Schreib- oder Leseoperation eines langsamen Gerätes. Solche Prozesse befinden sich im Zustand D (uninterruptible sleep).

Möchte man alle Instanzen eines Programmes beenden, hilft der Befehl killall, z.B.
# killall firefox-bin
In dem Fall ist nicht die Prozessnummer, sondern der Prozessname anzugeben.
ps ist immer nur ein Snapschuss der gerade laufenden Prozesse. Möchte man eine ständige Überwachung hilft das Programm top.
# top
top zeigt eine sich ständig aktualisierende Prozesstabelle. Damit kann man sehen, welche Prozesse denn gerade die CPU so dermaßen beschäftigen, daß ein vernünftiges Arbeiten nicht mehr möglich ist.