Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Bootzeitpunkt und Systemlast: uptime Informationen sammeln Nicht immer mit Tötungsabsicht: »

Unterabschnitte
  • ps
  • Prozess-Hitparade: top

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. init hat immer die Prozessnummer 1. Die dann entstehenden Prozesse bekommen bei ihrer Entstehung eine neue, derzeit freie Nummer und behalten sie, bis sie enden. Diese Prozessnummer wird Prozess-ID oder PID genannt.

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 ps zeigt eine Liste der aktuell laufenden Prozesse an. Der Befehl kennt sehr viele Optionen, die bestimmen, welche Informationen angezeigt werden. Leider unterscheiden sich die Optionen zwischen BSD-Systemen und System V erheblich. Linux versucht einen Mittelweg, indem es normalerweise die System V-Optionen verwendet, allerdings auch die BSD-Optionen kennt, wenn man den Bindestrich vor den Optionen weglässt. MacOS X verwendet die Syntax von BSD.

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
ps -alx & BSD und Linux: zeigt auch PID und PPID
ps -aux & BSD: zeigt auch Benutzer
ps -elf & System V, beispielsweise SCO und HP-UX

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
-a & Alle Prozesse, nicht nur die eigenen
-x & Zeigt auch Prozesse, die keinem Terminal zugeordnet sind (z. B. Dämonen)
-u & Zeigt den Benutzer des Prozesses und die Startzeit
-l & Zeigt die Prozess-ID des Vaterprozess und den nice-Wert

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
-e & Zeigt alle auf dem System laufenden Prozesse
-l & Zeigt Größe, Status und Priorität jedes Prozesses
-f & Zeigt User-ID, PID, PPID und Startzeit

Daneben gibt es eine große Menge anderer Optionen, die diverse Informationen zu den Prozessen liefern. Die Manpage von ps liefert eine vollständige Liste für Ihr System.

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 init mit der PID 1. Die erste Zeile zeigt in den Überschriften, was die einzelnen Spalten anzeigen. Diese Liste ist durch den Befehl ps aux entstanden. Je nach System und Parametern sind die Spalten anders. In Tabelle werden die wichtigsten Spalten beschrieben, die man durch ps anzeigen lassen kann. Welche Informationen durch welche Flags angezeigt werden, entnimmt man am besten der Manpage von ps auf dem jeweiligen System.

[Titelkürzel einer Prozessliste]L|L Kürzel & Beschreibung
USER & Benutzer, der den Prozess gestartet hat
PID & Prozess-ID, wird als Argument für kill verwendet
PPID & Die Prozess-ID des Elternprozesses
PGID & Prozessgruppen-ID
SID & Session-ID
PRI & Priorität des Prozesses. Je niedriger, desto mehr Rechenzeit
NI & Nice-Wert oder SY für Systemprozesse
%CPU & Anteil an der CPU-Auslastung
%MEM & Anteil an der Speicherauslastung
VSZ & Virtuelle Prozessgröße
RSS & Größe des residenten Speichers
TTY & Das Kontrollterminal des Prozesses
STAT & Status des Prozesses, siehe unten
SIZE oder SZ & Größe des Prozesses
START oder STIME & Startzeitpunkt
TIME & Die bisher verbrauchte CPU-Zeit
WCHAN & Kernelfunktion, auf die der Prozess wartet
COMMAND & Das Kommando, mit dem der Prozess gestartet wurde

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
R & Ausführbar
S & Schlafend
T & Gestoppt
D & Auf der Festplatte wartend
W & Prozess ist ausgelagert

Der Befehl ps kann von jedem Anwender aufgerufen werden, nicht nur von root. Dementsprechend ist es ein massives Sicherheitsloch, wenn ein Programm ein Passwort als Parameter im Klartext entgegennimmt.

Prozess-Hitparade: top

Während ps eine Momentaufname der Prozesse zeigt, stellt das Programm top die Prozesse in der Reihenfolge ihres CPU-Zeitverbrauchs dar. Wenn man also den Verdacht hat, dass ein Prozess überdurchschnittlich viel CPU-Zeit verbraucht, ist top ein ideales Werkzeug. Es erstellt eine Hitparade der Prozesse. Diejenigen Prozesse, die am meisten CPU-Zeit verbrauchen, stehen in der ersten Zeile. Hier folgt ein Beispiel für die Prozesstabelle, wie sie top anzeigt und regelmäßig aktualisiert.

 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 h kann man sich die möglichen Kommandos anzeigen lassen. Aus top heraus kann man renice (siehe S. renice) durch die Taste r oder kill (siehe unten) über die Taste k aufrufen. Anschließend fragt das Programm, welcher Prozess gemeint war, und bittet um dessen PID. Mit der Taste q kann man das Programm wieder verlassen.

Das Programm top ist Bestandteil der Open Source-Systeme wie Linux oder FreeBSD und damit auch von MacOS X. Für die anderen Systeme kann es aber frei bezogen werden.

Quelle: http://www.groupsys.com/top/index.html



« Bootzeitpunkt und Systemlast: uptime | Informationen sammeln | Nicht immer mit Tötungsabsicht: »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de