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