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