prev.gif (317 Byte)toc.gif (316 Byte)next.gif (317 Byte)


Prozeßmanagement unter Linux

Wie bei allen Multitaskingsystemen gibt es auch unter Linux einige Befehle zum Prozeßmanagement. Mit diesen Befehlen ist es möglich, auf laufende oder zu startende Prozesse Einfluß zu nehmen bzw. deren Prozeßstatus zu visualisieren.

Die einzelnen Prozesse werden unter Linux von einem Scheduler gemanagt. Dieser sorgt dafür, daß den einzelnen Prozesse die für sie jeweils nötige CPU Zeit erhalten.

Prozesse anzeigen lassen - ps

Mittels des ps Befehles ist es möglich, sich Prozesse anzeigen zu lassen. Wird das Kommando ohne Parameter aufgerufen, listet das System die eigenen Prozesse auf.
Dabei werden einige weitere Prozeßinformationen angezeigt.

Beispiel:

[as@hades as]$ ps
PID TTY STAT TIME COMMAND
21503 p1 S 0:04 -bash
22384 p0 S 0:01 -bash
22398 p0 R 0:00 ps

Die Spalte PID gibt Auskunft über die ID des Prozesses. Die PID ist eine eindeutige Nummer, welche innerhalb des laufenden Systemes ausschließlich diesen einen Prozeß eindeutig identifiziert. Die TTY - Angabe gibt Aufschluß über das Terminal, an welchem der Benutzer, der diesen Prozeß gestartet hat, angemeldet ist.
Die STAT - Spalte bezeichnet den aktuellen Status des Prozesses. Dabei sind folgende Zustände möglich:

R : laufend
S : schlafend
D : nicht störbar schlafend
T : angehalten
Z : Zombie
W : Prozeß belegt keine Speicherseiten

Die TIME Angabe gibt Aufschluß über die bislang benötige Prozessorzeit, während die COMMAND Spalte den Prozeß selbst benennt.

Mittels einiger Parameter kann man jedoch noch weitere Informationen über die Prozesse erhalten.

Folgende Parameter sind wichtig:

u : Angabe des Prozeßbesitzers
x : Erweiterte Informationsausgabe
a : Zeigt die Prozesse aller Benutzer
w : Ausführliche Angabe des Prozeßdaten

Bei einigen Parametern erhält man noch Informationen über die benötigte CPU Last des Prozesses, sowie über den benötigten Speicher.

Syntax:

ps [Optionen]

Prozeßkontrolle - top

Über das top - Kommando kann man einen Einblick in die aktuelle Prozeßtabelle des Systemes erlangen.

Die top Anweisung kann ohne Paramter aufgerufen werden. Top ist ein Programm, welches sich selbst updatet und immer den aktuellen Prozeßstatus anzeigt. Eine typische Ausgabe wäre:

3:45pm up 94 days, 22:15, 2 users, load average: 0.08, 0.06, 0.01
65 processes: 64 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 19.5% user, 22.0% system, 0.0% nice, 58.4% idle
Mem: 22744K av, 21476K used, 1268K free, 28032K shrd, 5744K buff
Swap: 130500K av, 2952K used, 127548K free 6720K cached

PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
22504 as 17 0 712 712 544 R 0 40.1 3.1 0:01 top
563 root 1 0 136 108 96 S 0 1.0 0.4 255:53 update
22382 root 0 0 960 960 624 S 0 0.5 4.2 0:02 sshd
1 root 0 0 292 244 224 S 0 0.0 1.0 0:11 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:05 kflushd
3 root -12 -12 0 0 0 SW< 0 0.0 0.0 0:13 kswapd
6974 nobody 0 0 1888 1132 1108 S 0 0.0 4.9 0:00 httpd
556 root 0 0 220 168 168 S 0 0.0 0.7 0:00 mingetty
506 nobody 0 0 1076 892 552 S 0 0.0 3.9 214:12 squid.novm
49 root 0 0 288 264 232 S 0 0.0 1.1 0:00 kerneld
272 root 0 0 460 448 352 S 0 0.0 1.9 283:32 syslogd
281 root 0 0 292 244 204 S 0 0.0 1.0 0:00 klogd
293 daemon 0 0 336 300 260 S 0 0.0 1.3 0:00 atd
304 root 0 0 416 380 332 S 0 0.0 1.6 1:38 crond
315 bin 0 0 220 152 152 S 0 0.0 0.6 0:00 portmap
326 root 0 0 724 444 396 S 0 0.0 1.9 0:22 snmpd
337 root 0 0 324 316 252 S 0 0.0 1.3 0:38 inetd


Die Ausgabe gibt Informationen über Prozeßid (PID), Prozeßbesitzer (USER), Prozeßpriorität (PRI), Nicewert (NI), Prozeßgröße (SIZE), Speichernutzung (RSS), Nutzung von geteiltem Speicher (SHARE), Prozeßstatus (STAT), Anteil an der Gesamt-CPU Zeit (%CPU), Anteil an der Gesamtspeichernutzung (%MEM), verbrauchte CPU Zeit (TIME) und das laufende Kommando (COMMAND).

Syntax:

top

Prozesse terminieren - kill

Die Anweisung kill wird dazu benutzt, außer Kontrolle geratene Prozesse, welche sich nicht mehr auf normale Art und Weise beenden lassen, zu terminieren. Kill ist in der Lage verschiedene Signale an Prozesse zu senden.

Die meist genutzten Signale sind:

1 : Inititalisiert den betreffenden Prozeß neu
9 : Beendet den betreffenden Prozeß 'hart'
15 : Beendet den betreffenden Prozeß normal

Neben dem Signal wird dem Kill Kommando noch die ID des betreffenden Prozess übergeben.

Syntax:

kill <-SIGNAL> <Prozeßid>

Prozesse im Hintergrund starten

Natürlich kann man Prozesse auch gleich im Hintergrund zu starten. Dies ist möglich, indem hinter das zu startende Programm, das kaufmännische 'und' - Zeichen gesetzt wird.

Beispiel:

test.pl &

Diese Zeile würde das Programm test.pl im Hintergrund starten. Dabei sollte das Programm nach Möglichkeit keine Bildschirmausgaben machen, da diese auf das aktuelle Terminal kämen.


prev.gif (317 Byte)toc.gif (316 Byte)next.gif (317 Byte)