Operation Manual

buch” 2014/9/6 18:56 page 146 #142
3 Arbeiten im Terminal
Prozesshierarchie
Intern wird mit jedem Prozess auch die PID-Nummer des Elternprozesses gespei-
chert. Diese Information ermöglicht die Darstellung eines Prozessbaums, an dessen
Spitze unter Raspbian immer der Prozess
init steht. init ist das erste Programm, das
unmittelbar nach dem Laden des Kernels gestartet wird. Details dazu können Sie in
Abschnitt 5.7 nachlesen.
Zur Darstellung der Prozesshierarchie rufen Sie das Kommando
pstree auf. Mit der
Option
-h werden die Elternprozesse zum gerade laufenden Prozess fett hervorgeho-
ben (siehe Abbildung 3.6).
Abbildung 3.6 »pstree« zeigt, welcher Prozess von welchem gestartet wurde.
146
buch” 2014/9/6 18:56 page 147 #143
3
3.9 Prozessverwaltung
Prozesse abbrechen
Normalerweise endet ein Prozess mit dem Programmende. Aber leider kommt es
auch unter Linux vor, dass Programme Fehler enthalten, sich nicht mehr stoppen
lassen und womöglich immer mehr Speicher und CPU-Kapazität beanspruchen. In
solchen Fällen muss der Prozess gewaltsam beendet werden. Bei textorientierten
Kommandos hilft in den meisten Fällen einfach
(Strg)+(C). Damit wird das Programm
sofort beendet.
Das Kommando
kill versendet Signale an einen laufenden Prozess, der durch die
PID-Nummer spezifiziert wird. Diese Nummer können Sie mit
top oder ps ermitteln.
Um ein Programm höflich zu beenden, wird das Signal 15 verwendet.
kill verwendet
dieses Signal per Default. Hilft das nicht, muss das Signal 9 eingesetzt werden (hier
für den Prozess 2725).
kill -9 zwingt den Prozess, sich sofort zu beenden.
kill -9 2725
kill
kann nur für eigene Prozesse verwendet werden. Zum Beenden fremder Prozesse
müssen Sie
kill mit Administratorrechten ausführen, also mit sudo.
Auch mit
top können Sie Prozesse beenden: Geben Sie einfach (K) und anschließend
die Prozessnummer und das gewünschte Signal ein!
killall ist eine Variante zu kill. Dabei wird nicht die Prozessnummer, sondern der
Programmname angegeben. Es werden alle Prozesse dieses Namens beendet.
killall lxterminal
Prozesspriorität einstellen
Wenn mehrere Prozesse gleichzeitig laufen, entscheidet der Linux-Kernel, welcher
Prozess wie viel CPU-Zeit erhält. In manchen Fällen ist es sinnvoll, einem Prozess
bewusst mehr oder weniger Rechenzeit zuzuteilen. Dazu dient das Kommando
nice,
mit dem Programme mit reduzierter oder erhöhter Priorität gestartet werden kön-
nen. Dazu wird an
nice die gewünschte Priorität übergeben, die von 19 (ganz niedrig)
bis -20 (ganz hoch) reicht. Per Default werden Prozesse mit der Priorität 0 gestartet.
Im folgenden Beispiel wird ein Backup-Programm mit niedrigerer Priorität gestartet,
damit es keine anderen Prozesse beeinträchtigt. Es spielt ja normalerweise keine
Rolle, ob das Backup ein paar Sekunden länger dauert.
nice -n 10 ./ mein- backup- script
Mit renice kann auch die Priorität von bereits laufenden Prozessen geändert werden.
Als Parameter muss die Prozess-ID angegeben werden, die vorher mit
top oder ps
ermittelt wurde. Allerdings kann nur root Programme mit einer höheren Priorität
als 0 starten bzw. die Priorität eines bereits laufenden Prozesses erhöhen.
147