|
|
Prozessbeobachter
Ein Prozess ist ein gestartetes Programm. Es hat damit seinen Ursprung in
einer ausführbaren Datei. Der Prozess beansprucht Platz im Hauptspeicher für
seinen Programmcode sowie seine Daten und erwartet die Zuteilung des Prozessors.
Alle Prozesse haben einen
Elternprozess. Bei einem von der Shell aus gestarteten Programm ist der
Vater die Shell. Die Shell ist beispielsweise wiederum Kind eines
Loginprozesses. Daraus ergibt sich ein Baum von Prozessen, der letztlich
auf den init-Prozess zurückgeht, der beim Booten entsteht. Jeder Prozess hat einen eindeutigen Besitzer. Das ist derjenige, der den Prozess gestartet hat. Lediglich, wenn die aufgerufene Programmdatei das User-ID-Bit gesetzt hat (siehe S. suid), ergibt sich eine besondere Situation. Der Prozess hat nach wie vor den realen Benutzer, der den Prozess gestartet hat. Die effektiven Ausführungsberechtigungen erhält er aber durch den Besitzer des gestarteten Programms. Er läuft also quasi unter der Flagge des Besitzers der Programmdatei. Darum spricht man hier vom realen Benutzer und vom effektiven Benutzer. Alle lauffähigen Prozesse werden in eine Prozessliste eingetragen. Das Betriebssystem startet einen Prozess aus dieser Liste für eine Weile, bis eine gewisse Zeit vergangen ist. Dann wird der Prozess eingefroren. Das heißt, man kopiert den Prozessorstatus in einen Speicher und holt den nächsten Prozess aus der Liste, kopiert den vorher im Speicher abgelegten Prozessorstatus wieder in den Prozessor und lässt diesen Prozess laufen, bis der nächste Takt erreicht ist. Da der Takt relativ schnell ist, bemerken die Anwender kaum, dass ihre Programme kurzzeitig inaktiv sind. Stattdessen entsteht der Eindruck, dass alle Prozesse parallel laufen. Der Teil des Betriebssystems, der diese Prozessumschaltung durchführt, heißt Scheduler. Es gibt bestimmte Situationen, in denen ein Prozess nicht weiterarbeiten kann. Das kommt beispielsweise vor, wenn er auf einen Tastendruck des Benutzers wartet oder darauf, dass ein Datenblock von der Platte gelesen wird oder dass sonst ein bestimmtes Ereignis eintritt. Wenn der Prozess derartige Anfragen an das Betriebssystem stellt, wird er aus der normalen Prozessliste herausgenommen und in eine Warteschlange gesteckt. Sobald das erwartete Ereignis eintrifft, holt das Betriebssystem den Prozess aus der Warteschlange und bringt ihn wieder in die Prozessliste. Einer der Vorteile von UNIX ist die Möglichkeit, wirklich alle laufenden und wartenden Prozesse, ihre Zugehörigkeit und ihren Ressourcenverbrauch beobachten zu können. Als Administrator hat man dadurch viele Möglichkeiten zu erkennen und einzugreifen, wenn etwas nicht sauber läuft.
ps
Der Befehl Für eine Übersicht über alle auf dem System laufenden Prozesse gibt es Kombinationen von Optionen, die der Administrator fast ohne nachzudenken verwendet.
[Varianten des ps]L|L
Befehl & System
Ohne Parameter werden nur die Prozesse gezeigt, die von dieser Sitzung erzeugt wurden. In Tabelle sind die Optionen aufgeführt, die BSD-Systeme verwenden.
[Beliebte ps-Optionen (BSD)]C|L
Option & Anzeige
Auf den System V-Maschinen verwendet man meist -elf. Die Bedeutung dieser Parameter ist in der Tabelle aufgeführt.
[Beliebte ps-Optionen (System V)]C|L
Option & Anzeige
Daneben gibt es eine große Menge anderer Optionen, die diverse Informationen zu
den Prozessen liefern. Die Manpage von Die Titel der Prozessliste geben Auskunft über die angezeigten Informationen.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 448 208 ? S 09:37 0:04 init [5] root 2 0.0 0.0 0 0 ? SW 09:37 0:00 [keventd] root 3 0.0 0.0 0 0 ? SW 09:37 0:00 [kapm-idled] root 4 0.0 0.0 0 0 ? SWN 09:37 0:00 [ksoftirqd_CPU0] root 5 0.0 0.0 0 0 ? SW 09:37 0:00 [kswapd] root 6 0.0 0.0 0 0 ? SW 09:37 0:00 [bdflush] root 7 0.0 0.0 0 0 ? SW 09:37 0:00 [kupdated] root 8 0.0 0.0 0 0 ? SW< 09:37 0:00 [mdrecoveryd] root 11 0.0 0.0 0 0 ? SW 09:37 0:00 [scsi_eh_0] root 13 0.0 0.0 0 0 ? SW 09:37 0:00 [khubd] root 390 0.0 0.1 1396 628 ? S 09:39 0:00 /sbin/syslogd root 393 0.0 0.3 1772 992 ? S 09:39 0:00 /sbin/klogd -c 1 root 399 0.0 0.2 2308 828 ? S 09:39 0:00 /usr/sbin/sshd bin 452 0.0 0.1 1340 428 ? S 09:39 0:00 /sbin/portmap arnold 1249 0.0 19.5 108924 62496 ? R 10:01 0:15 /opt/office52/soffice arnold 2353 0.0 0.5 2840 1620 pts/4 S 17:11 0:00 /bin/bash arnold 2416 0.0 0.5 2692 1716 pts/4 R 17:32 0:00 ps aux arnold 2417 0.0 0.2 1976 824 pts/4 R 17:32 0:00 less
Dieser Ausschnitt der Prozessliste zeigt in der ersten Zeile den Prozess
[Titelkürzel einer Prozessliste]L|L
Kürzel & Beschreibung
Der Prozessstatus STAT kann verschiedene Zeichen haben. R bedeutet runnable. Der Prozess ist also gerade aktiv. Im Beispiel oben sind dies beispielsweise der ps mit der PID 2416, der die Anzeige erzeugt hat. Das immer wieder auftauchende S zeigt an, dass der Prozess schläft, also auf ein Ereignis wartet, das ihn weckt.
[Prozessstatus]C|L
Status & Bedeutung
Der Befehl
Prozess-Hitparade: top
Während
11:32am up 3:04, 1 user, load average: 0.11, 0.16, 0.07 95 processes: 93 sleeping, 2 running, 0 zombie, 0 stopped CPU states: 1.7% user, 2.3% system, 0.0% nice, 95.8% idle Mem: 320136K av, 189100K used, 131036K free, 0K shrd, 5756K buff Swap: 128512K av, 0K used, 128512K free 118592K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 822 root 16 0 41876 8640 1720 S 1.9 2.6 0:39 X 1174 arnold 13 0 9180 9176 8256 R 1.1 2.8 0:01 kdeinit 1646 arnold 18 0 1004 1004 776 R 0.7 0.3 0:00 top 1 root 9 0 208 208 176 S 0.0 0.0 0:04 init 2 root 9 0 0 0 0 SW 0.0 0.0 0:00 keventd 3 root 9 0 0 0 0 SW 0.0 0.0 0:00 kapm-idled 4 root 19 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0 5 root 9 0 0 0 0 SW 0.0 0.0 0:00 kswapd 6 root 9 0 0 0 0 SW 0.0 0.0 0:00 bdflush 7 root 9 0 0 0 0 SW 0.0 0.0 0:00 kupdated 8 root -1 -20 0 0 0 SW< 0.0 0.0 0:00 mdrecoveryd 11 root 9 0 0 0 0 SW 0.0 0.0 0:00 scsi_eh_0 13 root 9 0 0 0 0 SW 0.0 0.0 0:00 khubd 343 news 9 0 2772 2772 1284 S 0.0 0.8 0:00 innd 346 news 9 0 880 880 732 S 0.0 0.2 0:00 actived 367 news 9 0 704 704 596 S 0.0 0.2 0:00 overchan 370 news 9 0 2460 2460 1248 S 0.0 0.7 0:00 controlchan 373 root 9 0 0 0 0 SW 0.0 0.0 0:00 usb-storage-0
Mit
Das Programm Quelle: http://www.groupsys.com/top/index.html
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|