Dienstprogramme zur Systemüberwachung

Inhaltsverzeichnis

13.1. Mehrzweck-Tools
13.2. Systemangaben
13.3. Vorgänge
13.4. Arbeitsspeicher
13.5. Netzwerke
13.6. Das Dateisystem /proc
13.7. Hardware-Informationen
13.8. Dateien und Dateisysteme
13.9. Benutzerinformationen
13.10. Zeit und Datum
13.11. Darstellung der Daten in Diagrammen: RRDtool

Zusammenfassung

Es stehen eine Reihe von Programmen, Tools und Dienstprogrammen zur Verfügung, mit denen Sie den Status des Systems überprüfen können. In diesem Kapitel werden einige dieser Hilfsmittel vorgestellt und die wichtigsten und am häufigsten genutzten Parameter werden beschrieben.

Für die beschriebenen Kommandos werden jeweils beispielhafte Ausgaben dargestellt. Darin ist die erste Zeile das Kommando selbst (nach einem >- oder #-Zeichen als Eingabeaufforderung). Auslassungen sind durch eckige Klammern ([...]) gekennzeichnet und lange Zeilen werden, falls erforderlich, umgebrochen. Umbrüche langer Zeilen sind durch einen umgekehrten Schrägstrich (\) gekennzeichnet.

# command -x -y
output line 1
output line 2
output line 3 is annoyingly long, so long that \
    we have to break it
output line 3
[...]
output line 98
output line 99

Die Beschreibungen sind bewusst kurz gehalten, damit so viele Dienstprogramme wie möglich angesprochen werden können. Weitere Informationen zu allen Kommandos finden Sie auf den entsprechenden man-Seiten. Die meisten Kommandos verstehen auch die Option --help, mit der Sie eine kurze Liste der verfügbaren Parameter anzeigen können.

Mehrzweck-Tools

Die meisten Tools zur Systemüberwachung in Linux konzentrieren sich jeweils auf einen bestimmten Aspekt des Systems. Es gibt jedoch einige "Allzweck-Tools", die mehrere Aspekte des Systems gleichzeitig betrachten. Mit diesen Tools verschaffen Sie sich einen ersten Überblick und Sie können sich für einen Teil des Systems entscheiden, den Sie näher untersuchen möchten.

vmstat

vmstat sammelt Informationen zu Prozessen, zum Arbeitsspeicher, zur E/A, zu Interrupts und zum Prozessor. Wenn Sie dieses Kommando ohne eine Abtastrate aufrufen, werden die Durchschnittswerte seit dem letzten Neustart angezeigt. Beim Aufrufen mit Abtastrate werden die tatsächlichen Werte zurückgegeben:

Beispiel 13.1. vmstat-Ausgabe auf einem schwach ausgelasteten Rechner



tux@mercury:~> vmstat -a 2
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu-------
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy  id wa st
 0  0      0 750992 570648 548848    0    0     0     1    8    9  0  0 100  0  0
 0  0      0 750984 570648 548912    0    0     0     0   63   48  1  0 99   0  0
 0  0      0 751000 570648 548912    0    0     0     0   55   47  0  0 100  0  0
 0  0      0 751000 570648 548912    0    0     0     0   56   50  0  0 100  0  0
 0  0      0 751016 570648 548944    0    0     0     0   57   50  0  0 100  0  0

Beispiel 13.2. vmstat-Ausgabe auf einem stark ausgelasteten Rechner



tux@mercury:~> vmstat 2
procs -----------memory----------- ---swap-- -----io---- -system-- -----cpu------
 r  b   swpd   free   buff   cache   si   so    bi    bo   in   cs us sy id wa st
32  1  26236 459640 110240 6312648    0    0  9944     2 4552 6597 95  5  0  0  0
23  1  26236 396728 110336 6136224    0    0  9588     0 4468 6273 94  6  0  0  0
35  0  26236 554920 110508 6166508    0    0  7684 27992 4474 4700 95  5  0  0  0
28  0  26236 518184 110516 6039996    0    0 10830     4 4446 4670 94  6  0  0  0
21  5  26236 716468 110684 6074872    0    0  8734 20534 4512 4061 96  4  0  0  0

[Tip]

Die erste Zeile der vmstat-Ausgabe enthält stets die Durchschnittswerte seit dem letzten Neustart.

Die Spalten zeigen Folgendes:

r

Anzahl der Prozesse in der Warteschlange. Diese Prozesse warten zur Ausführung auf eine freie Prozessorposition. Wenn die Anzahl der Prozesse in dieser Spalte ständig höher ist als die Anzahl der verfügbaren Prozessoren, weist dies darauf hin, dass die Prozessorleistung nicht ausreicht.

b

Anzahl der Prozesse, die auf eine andere Ressource warten (nicht auf einen Prozessor). Ein hoher Wert in dieser Spalte kann auf ein E/A-Problem (Netzwerk oder Festplatte) hinweisen.

swpd

Menge des zurzeit genutzten Auslagerungsspeichers.

Frei

Menge des nicht genutzten Arbeitsspeichers.

inact

Bislang nicht genutzter Arbeitsspeicher, der zurückgewonnen werden kann. Diese Spalte ist nur dann sichtbar, wenn vmstat mit dem Parameter -a aufgerufen wird (empfohlen).

AKTIV

Diese Spalte ist nur dann sichtbar, wenn vmstat mit dem Parameter -a aufgerufen wird (empfohlen).

buff

Dateipuffer-Cache im RAM. Diese Spalte ist nicht sichtbar, wenn vmstat mit dem Parameter -a aufgerufen wird (empfohlen).

cache

Seiten-Cache im RAM. Diese Spalte ist nicht sichtbar, wenn vmstat mit dem Parameter -a aufgerufen wird (empfohlen).

si

Menge der Daten, die pro Sekunde aus dem RAM in den Auslagerungsspeicher verschoben werden. Hohe Werte über einen längeren Zeitraum in dieser Spalte weisen darauf hin, dass eine größere Menge RAM im Rechner eingebaut werden sollte.

so

Menge der Daten, die pro Sekunde aus dem Auslagerungsspeicher in den RAM verschoben werden. Hohe Werte über einen längeren Zeitraum in dieser Spalte weisen darauf hin, dass eine größere Menge RAM im Rechner eingebaut werden sollte.

bi

Anzahl der Blöcke, die pro Sekunde von einem Blockgerät empfangen werden (z. B. beim Auslesen von Festplatte). Die Nutzung der Auslagerungsdatei wirkt sich auch auf die hier angezeigten Werte aus.

bo

Anzahl der Blöcke, die pro Sekunde an ein Blockgerät gesendet werden (z. B. beim Schreiben auf Festplatte). Die Nutzung der Auslagerungsdatei wirkt sich auch auf die hier angezeigten Werte aus.

In

Interrupts pro Sekunde. Ein hoher Wert weist auf rege E/A (Netzwerk und/oder Festplatte) hin.

cs

Anzahl der Kontext-Umschaltungen pro Sekunde. Vereinfacht bedeutet dies, dass der Kernel den ausführbaren Code eines Programms im Arbeitsspeicher durch den ausführbaren Code eines zweiten Programms ersetzen muss.

us

Prozentuale Auslastung des Prozessors durch Benutzerprozesse.

sy

Prozentuale Auslastung des Prozessors durch Systemprozesse.

id

Prozentuale Prozessorzeit im Leerlauf. Ist dieser Wert über einen längeren Zeitraum gleich Null, arbeiten die Prozessoren mit Vollauslastung. Dies ist nicht in jedem Fall ein schlechtes Zeichen. Ermitteln Sie stattdessen anhand der Werte in den Spalten r und b, ob der Rechner mit ausreichend Prozessorleistung ausgestattet ist.

wa

Wartezeit auf E/A. Ist dieser Wert über einen längeren Zeitraum deutlich höher als Null, liegt ein Engpass im E/A-System (Netzwerk oder Festplatte) vor.

st

Prozentualer Anteil an der Prozessorzeit, der von virtuellen Maschinen genutzt wird.

Weitere Optionen siehe vmstat --help.

Informationen zur Systemaktivität: sar und sadc

Mit sar können umfangreiche Berichte zu fast alle wichtigen Systemaktivitäten generiert werden, darunter CPU-, Speicher-, IRQ-Auslastung, EA oder Netzwerk. Hiermit können Sie Berichte direkt generieren oder auch vorhandene Berichte abfragen, die in der Sammelstelle der Systemaktivitätsdaten (sadc, System Activity Data Collector) zusammengestellt wurden. Bei sar und sadc werden alle Daten aus dem Dateisystem /proc erfasst.

[Note]sysstat-Paket

sar und sadc gehören zum sysstat-Paket. Dieses Paket muss entweder mit YaST oder mit zypper in sysstat installiert werden.

Automatische Zusammenstellung der täglichen Statistik mit sadc

Wenn Sie Ihr System über einen längeren Zeitraum hinweg überwachen möchten, lassen Sie die Daten mit sadc automatisch erfassen. Diese Daten können Sie jederzeit mit sar auslesen. Zum Starten von sadc führen Sie einfach /etc/init.d/boot.sysstat start aus. Damit wird eine Verbindung zu /etc/cron.d/ hinzugefügt, so dass sadc mit der folgenden Standardkonfiguration aufgerufen wird:

  • Alle verfügbaren Daten werden erfasst.

  • Die Daten werden in /var/log/sa/saTT geschrieben, wobei TT den aktuellen Tag bezeichnet. Wenn eine Datei bereits vorhanden ist, wird sie archiviert.

  • Der Übersichtsbericht wird in /var/log/sa/sarTT geschrieben, wobei TT den aktuellen Tag bezeichnet. Bereits vorhandene Dateien werden archiviert.

  • Die Daten werden alle 10 Minuten erfasst, und ein Übersichtsbericht wird alle 6 Stunden generiert (siehe /etc/sysstat/sysstat.cron).

  • Die Daten werden mit dem Skript /usr/lib64/sa/sa1 erfasst (bzw. /usr/lib/sa/sa1 bei 32-Bit-Systemen).

  • Die Übersichten werden mit dem Skript /usr/lib64/sa/sa2 generiert (bzw. /usr/lib/sa/sa2 bei 32-Bit-Systemen).

Soll die Konfiguration angepasst werden, kopieren Sie die Skripten sa1 und sa2 und passen Sie sie an Ihre Anforderungen an. Ersetzen Sie den Link /etc/cron.d/sysstat durch eine angepasste Kopie von /etc/sysstat/sysstat.cron, mit der Ihre Skripten aufgerufen werden.

Generieren von Berichten mit sar

Zum direkten Generieren von Berichten rufen Sie sar mit Angabe eines Intervalls (Sekunden) und einer Anzahl auf. Zum Generieren von Berichten aus Dateien geben Sie mit der Option -f einen Dateinamen an (statt eines Intervalls und einer Anzahl). Wenn Sie keinen Dateiname, kein Intervall und keine Anzahl angeben, versucht sar einen Bericht aus /var/log/sa/saTT zu generieren, wobei TT den aktuellen Tag bezeichnet. Dies ist der Standardpfad, in den sadc die Daten schreibt. Sollen mehrere Dateien abgefragt werden, geben Sie die Option -f mehrfach an.

sar 2 10                         # on-the-fly report, 10 times every 2 seconds
sar -f ~/reports/sar_2010_05_03  # queries file sar_2010_05_03
sar                              # queries file from today in /var/log/sa/
cd /var/log/sa &&\
sar -f sa01 -f sa02              # queries files /var/log/sa/0[12]

Im Folgenden finden Sie Beispiele für sar-Aufrufe und ihre Interpretation. Ausführliche Informationen zur Bedeutung der einzelnen Spalten finden Sie auf der man-Seite (1) für sar. Beachten Sie außerdem die man-Seite zu weiteren Optionen und Berichten – sar hat einiges zu bieten.

Bericht über die Prozessorauslastung: sar

Wenn Sie sar ohne Optionen aufrufen, wird ein grundlegender Bericht über die Prozessorauslastung zurückgegeben. Bei Rechnern mit mehreren Prozessoren werden die Ergebnisse für alle Prozessoren zusammengefasst. Mit der Option -P ALL erhalten Sie außerdem die Statistik für die einzelnen Prozessoren.

mercury:~ # sar 10 5
Linux 2.6.31.12-0.2-default (mercury) 03/05/10   _x86_64_   (2 CPU)

14:15:43   CPU    %user   %nice   %system   %iowait    %steal     %idle
14:15:53   all    38.55    0.00      6.10      0.10      0.00     55.25
14:16:03   all    12.59    0.00      4.90      0.33      0.00     82.18
14:16:13   all    56.59    0.00      8.16      0.44      0.00     34.81
14:16:23   all    58.45    0.00      3.00      0.00      0.00     38.55
14:16:33   all    86.46    0.00      4.70      0.00      0.00      8.85
Average:   all    49.94    0.00      5.38      0.18      0.00     44.50

Ist der Wert für %iowait (prozentuale Prozessorzeit im Leerlauf beim Warten auf E/A) über einen längeren Zeitraum hinweg deutlich höher als Null liegt ein Engpass im E/A-System (Netzwerk oder Festplatte) vor. Ist der Wert für %idle über einen längeren Zeitraum gleich Null, arbeiten die Prozessoren mit Vollauslastung.

Bericht über die Arbeitsspeicherauslastung: sar -r

Mit der Option -r verschaffen Sie sich einen Gesamteindruck über den Systemarbeitsspeicher (RAM):



mercury:~ # sar -r 10 5
Linux 2.6.31.12-0.2-default (mercury) 03/05/10   _x86_64_   (2 CPU)

16:12:12 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
16:12:22    548188   1507488    73.33     20524    64204  2338284   65.10
16:12:32    259320   1796356    87.39     20808    72660  2229080   62.06
16:12:42    381096   1674580    81.46     21084    75460  2328192   64.82
16:12:52    642668   1413008    68.74     21392    81212  1938820   53.98
16:13:02    311984   1743692    84.82     21712    84040  2212024   61.58
Average:    428651   1627025    79.15     21104    75515  2209280   61.51

Die letzten beiden Spalten (kbcommit und %commit) zeigen den ungefähren Gesamtbedarf an Arbeitsspeicher (RAM plus Auslagerungsspeicher), der im schlimmsten Fall für die die aktuelle Arbeitslast erforderlich wäre (in Kilobyte bzw. Prozent).

Bericht zur Auslagerungsstatistik: sar -B

Mit der Option -B rufen Sie die Auslagerungsstatistik für den Kernel ab.



mercury:~ # sar -B 10 5 
Linux 2.6.31.12-0.2-default (mercury) 03/05/10   _x86_64_   (2 CPU)

16:11:43 pgpgin/s pgpgout/s   fault/s majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s  %vmeff
16:11:53   225.20    104.00  91993.90     0.00  87572.60      0.00      0.00      0.00    0.00
16:12:03   718.32    601.00  82612.01     2.20  99785.69    560.56    839.24   1132.23   80.89
16:12:13  1222.00   1672.40 103126.00     1.70 106529.00   1136.00    982.40   1172.20   55.33
16:12:23   112.18     77.84 113406.59     0.10  97581.24     35.13    127.74    159.38   97.86
16:12:33   817.22     81.28 121312.91     9.41 111442.44      0.00      0.00      0.00    0.00
Average:   618.72    507.20 102494.86     2.68 100578.98    346.24    389.76    492.60   66.93

Die Spalte majflt/s (schwerwiegende Fehler pro Sekunde) zeigt die Anzahl der Seiten, die von der Festplatte (Auslagerungsspeicher) in den Arbeitsspeicher geladen wurden. Eine große Anzahl an schwerwiegenden Fehlern verlangsamt das System und weist darauf hin, dass der Arbeitsspeicher nicht ausreicht. Die Spalte %vmeff zeigt die Anzahl der gescannten Seiten (pgscand/s) im Verhältnis zur Anzahl der Seiten, die aus dem Arbeitsspeicher-Cache oder dem Auslagerungsspeicher-Cache (pgsteal/s) wiederverwendet wurden. Dieser Wert gibt die Effizienz beim Zurückgewinnen der Seiten wieder. Solide Werte liegen entweder nahe 100 (jede inaktive, in den Auslagerungsspeicher übernommene Seite wird wiederverwendet) oder gleich Null (es wurden keine Seiten gescannt). Der Wert sollte nicht unter 30 fallen.

Bericht zur Blockgerätestatistik: sar -d

Mit der Option -d rufen Sie das Blockgerät ab (z. B. Festplatte, optisches Laufwerk, USB-Speichergerät). Denken Sie daran, die zusätzliche Option -p (Qualitätsdruck) zu aktivieren, damit die Spalte DEV lesbar ist.



mercury:~ # sar -d -p 10 5
Linux 2.6.31.12-0.2-default (neo) 	03/05/10 	_x86_64_	(2 CPU)

16:28:31  DEV    tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:28:41  sdc  11.51     98.50    653.45     65.32      0.10   8.83   4.87   5.61
16:28:41 scd0   0.00      0.00      0.00      0.00      0.00   0.00   0.00   0.00

16:28:41  DEV    tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:28:51  sdc  15.38    329.27    465.93     51.69      0.10   6.39   4.70   7.23
16:28:51 scd0   0.00      0.00      0.00      0.00      0.00   0.00   0.00   0.00

16:28:51  DEV    tps rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:29:01  sdc  32.47   876.72    647.35     46.94      0.33  10.20   3.67  11.91
16:29:01 scd0   0.00     0.00      0.00      0.00      0.00   0.00   0.00   0.00

16:29:01  DEV    tps rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:29:11  sdc  48.75  2852.45    366.77     66.04      0.82  16.93   4.91  23.94
16:29:11 scd0   0.00     0.00      0.00      0.00      0.00   0.00   0.00   0.00

16:29:11  DEV    tps rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
16:29:21  sdc  13.20   362.40    412.00     58.67      0.16  12.03   6.09   8.04
16:29:21 scd0   0.00     0.00      0.00      0.00      0.00   0.00   0.00   0.00

Average:  DEV    tps rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz  await  svctm  %util
Average:  sdc  24.26   903.52    509.12     58.23      0.30  12.49   4.68  11.34
Average: scd0   0.00     0.00      0.00      0.00      0.00   0.00   0.00   0.00

Falls der Rechner mehrere Festplatten enthält, erzielen Sie die beste Leistung, wenn die E/A-Anforderungen gleichmäßig auf alle Festplatten verteilt werden. Vergleichen Sie den Durchschnitt für tps, rd_sec/s und wr_sec/s auf allen Festplatten. Beständig hohe Werte in den Spalten svctm und %util können darauf hinweisen, dass nicht ausreichend freier Speicherplatz auf der Festplatte zur Verfügung steht.

Bericht zur Netzwerkstatistik: sar -n SCHLÜSSELWORT

Mit der Option -n generieren Sie verschiedene Berichte zum Netzwerk. Legen Sie eines der folgenden Schlüsselwörter zusammen mit der Option -n fest:

  • DEV: Generiert einen Statistikbericht für alle Netzwerkgeräte

  • EDEV: Generiert einen Fehlerstatistikbericht für alle Netzwerkgeräte

  • NFS: Generiert einen Statistikbericht für einen NFS-Client

  • NFSD: Generiert einen Statistikbericht für einen NFS-Server

  • SOCK: Generiert einen Statistikbericht für Sockets

  • ALL: Generiert einen Netzwerkstatistikbericht

Optische Darstellung von sar-Daten

sar-Berichte sind für menschliche Benutzer nicht immer einfach zu verstehen. Die Java-Anwendung kSar stellt die sar-Daten optisch in leicht lesbaren Diagrammen dar. Sogar PDF-Berichte können generiert werden. kSar kann direkt generierte Daten ebenso verwenden wie vergangene Daten aus einer Datei. kSar ist unter der BSD-Lizenz lizenziert und bei http://ksar.atomique.net/ erhältlich.

Systemangaben

Information zum Laden von Geräten: iostat

iostat überwacht das Laden von Geräten im System. Es erzeugt Berichte, die für eine bessere Auslastung des Ladevorgangs zwischen mit Ihrem System verbundenen physischen Datenträgern nützlich sind.

Der erste iostat-Bericht zeigt Statistiken, die seit dem Systemboot gesammelt wurden. Nachfolgende Berichte umfassen die Zeit seit dem vorherigen Bericht.

tux@mercury:~> iostat
Linux 2.6.32.7-0.2-default (geeko@buildhost) 	02/24/10 	_x86_64_

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,49    0,01    0,10    0,31    0,00   99,09

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               1,34         5,59        25,37    1459766    6629160
sda1              0,00         0,01         0,00       1519          0
sda2              0,87         5,11        17,83    1335365    4658152
sda3              0,47         0,47         7,54     122578    1971008

Beim Aufruf über die Option -n fügt iostat Statistiken zum Laden von Netzwerkdateisystemen (NFS) hinzu. Die Option -x zeigt erweiterte Statistikinformationen.

Sie können auch angeben, welches Gerät in welchen Zeitintervallen überwacht werden soll. Beispiel: iostat -p sda 3 5 zeigt fünf Berichte in 3-Sekunden-Intervallen für das Gerät "sda" an.

[Note]sysstat-Paket

iostat gehört zum sysstat-Paket. Dieses Paket muss entweder mit YaST oder mit zypper in sysstat installiert werden.

Überwachung der Prozessoraktivität: mpstat

Das Dienstprogramm mpstat prüft Aktivitäten von jedem verfügbaren Prozessor. Wenn Ihr System nur über einen Prozessor verfügt, wird die Statistik über den globalen Durchschnitt angelegt.

Mit der Option -P können Sie die Anzahl der zu überwachenden Prozessoren angeben. (Beachten Sie, dass 0 den ersten Prozessor angibt.) Die Zeitargumente funktionieren auf dieselbe Weise wie beim Kommando iostat. Durch Eingabe von mpstat -P 1 2 5 werden fünf Berichte für den zweiten Prozessor (Nummer 1) in 2-Sekunden-Intervallen gedruckt.

tux@mercury:~> mpstat -P 1 2 5
Linux 2.6.32.7-0.2-default (geeko@buildhost) 	02/24/10 	_x86_64_

08:57:10  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  \
 %guest   %idle
08:57:12    1    4.46    0.00    5.94    0.50    0.00    0.00    0.00  \
 0.00   89.11
08:57:14    1    1.98    0.00    2.97    0.99    0.00    0.99    0.00  \
 0.00   93.07
08:57:16    1    2.50    0.00    3.00    0.00    0.00    1.00    0.00  \
 0.00   93.50
08:57:18    1   14.36    0.00    1.98    0.00    0.00    0.50    0.00  \
 0.00   83.17
08:57:20    1    2.51    0.00    4.02    0.00    0.00    2.01    0.00  \
 0.00   91.46
Average:    1    5.17    0.00    3.58    0.30    0.00    0.90    0.00  \
 0.00   90.05

Aufgabenüberwachung: pidstat

Wenn Sie wissen müssen, welche Belastung eine bestimmte Aufgabe auf Ihr System ausübt, verwenden Sie das Kommando pidstat. Es druckt die Aktivität jeder ausgewählten Aufgabe bzw. aller Aufgaben, die vom Linux-Kernel verwaltet werden (sofern keine Aufgabe angegeben wird). Sie können auch die Anzahl der anzuzeigenden Berichte sowie das dazwischen liegende Zeitintervall festlegen.

Beispiel: pidstat -C top 2 3 druckt die Ladestatistik für Aufgaben, deren Kommandoname die Zeichenkette "top" enthält. Es werden drei Berichte in 2-Sekunden-Intervallen gedruckt.

tux@mercury:~> pidstat -C top 2 3
Linux 2.6.27.19-5-default (geeko@buildhost) 	03/23/2009 	_x86_64_

09:25:42 AM       PID    %usr %system  %guest    %CPU   CPU  Command
09:25:44 AM     23576   37.62   61.39    0.00   99.01     1  top

09:25:44 AM       PID    %usr %system  %guest    %CPU   CPU  Command
09:25:46 AM     23576   37.00   62.00    0.00   99.00     1  top

09:25:46 AM       PID    %usr %system  %guest    %CPU   CPU  Command
09:25:48 AM     23576   38.00   61.00    0.00   99.00     1  top

Average:          PID    %usr %system  %guest    %CPU   CPU  Command
Average:        23576   37.54   61.46    0.00   99.00     -  top

Kernel-Ring-Puffer: dmesg

Der Linux-Kernel hält bestimmte Meldungen in einem Ringpuffer zurück. Um diese Meldungen anzuzeigen, geben Sie den Befehl dmesg ein:

tux@mercury:~> dmesg
[...]
end_request: I/O error, dev fd0, sector 0
subfs: unsuccessful attempt to mount media (256)
e100: eth0: e100_watchdog: link up, 100Mbps, half-duplex
NET: Registered protocol family 17
IA-32 Microcode Update Driver: v1.14 <tigran@veritas.com>
microcode: CPU0 updated from revision 0xe to 0x2e, date = 08112004
IA-32 Microcode Update Driver v1.14 unregistered
bootsplash: status on console 0 changed to on
NET: Registered protocol family 10
Disabled Privacy Extensions on device c0326ea0(lo)
IPv6 over IPv4 tunneling driver
powernow: This module only works with AMD K7 CPUs
bootsplash: status on console 0 changed to on

Ältere Ereignisse werden in den Dateien /var/log/messages und /var/log/warn protokolliert.

Liste der geöffneten Dateien: lsof

Um eine Liste aller Dateien anzuzeigen, die für den Prozess mit der Prozess-ID PID geöffnet sind, verwenden Sie -p. Um beispielsweise alle von der aktuellen Shell verwendeten Dateien anzuzeigen, geben Sie Folgendes ein:

tux@mercury:~> lsof -p $$
COMMAND  PID   USER   FD   TYPE DEVICE  SIZE/OFF NODE NAME
bash    5552 tux  cwd    DIR    3,3    1512 117619 /home/tux
bash    5552 tux  rtd    DIR    3,3     584      2 /
bash    5552 tux  txt    REG    3,3  498816  13047 /bin/bash
bash    5552 tux  mem    REG    0,0              0 [heap] (stat: No such
bash    5552 tux  mem    REG    3,3  217016 115687 /var/run/nscd/passwd
bash    5552 tux  mem    REG    3,3  208464  11867 /usr/lib/locale/en_GB.
[...]
bash    5552 tux  mem    REG    3,3     366   9720 /usr/lib/locale/en_GB.
bash    5552 tux  mem    REG    3,3   97165   8828 /lib/ld-2.3.6.so
bash    5552 tux    0u   CHR  136,5              7 /dev/pts/5
bash    5552 tux    1u   CHR  136,5              7 /dev/pts/5
bash    5552 tux    2u   CHR  136,5              7 /dev/pts/5
bash    5552 tux  255u   CHR  136,5              7 /dev/pts/5

Es wurde die spezielle Shell-Variable $$ verwendet, deren Wert die Prozess-ID der Shell ist.

Wird der Befehl lsof ohne Parameter eingegeben, werden alle aktuell geöffneten Dateien angezeigt. Da dies in der Regel recht viele sind, wird dieses Kommando selten verwendet. Die Liste der Dateien kann jedoch mit Suchfunktionen kombiniert werden, um sinnvolle Listen zu generieren. Beispiel: Liste aller verwendeten zeichenorientierten Geräte:

tux@mercury:~> lsof | grep CHR
bash      3838     tux    0u      CHR  136,0                 2 /dev/pts/0
bash      3838     tux    1u      CHR  136,0                 2 /dev/pts/0
bash      3838     tux    2u      CHR  136,0                 2 /dev/pts/0
bash      3838     tux  255u      CHR  136,0                 2 /dev/pts/0
bash      5552     tux    0u      CHR  136,5                 7 /dev/pts/5
bash      5552     tux    1u      CHR  136,5                 7 /dev/pts/5
bash      5552     tux    2u      CHR  136,5                 7 /dev/pts/5
bash      5552     tux  255u      CHR  136,5                 7 /dev/pts/5
X         5646       root  mem       CHR    1,1              1006 /dev/mem
lsof      5673     tux    0u      CHR  136,5                 7 /dev/pts/5
lsof      5673     tux    2u      CHR  136,5                 7 /dev/pts/5
grep      5674     tux    1u      CHR  136,5                 7 /dev/pts/5
grep      5674     tux    2u      CHR  136,5                 7 /dev/pts/5

Bei Verwendung mit -i listet lsof auch aktuell geöffnete Internet-Dateien auf:

tux@mercury:~> lsof -i
[...]
pidgin     4349 tux   17r  IPv4  15194      0t0  TCP \
 jupiter.example.com:58542->www.example.net:https (ESTABLISHED)
pidgin     4349 tux   21u  IPv4  15583      0t0  TCP \
 jupiter.example.com:37051->aol.example.org:aol (ESTABLISHED)
evolution  4578 tux   38u  IPv4  16102      0t0  TCP \
 jupiter.example.com:57419->imap.example.com:imaps (ESTABLISHED)
npviewer.  9425 tux   40u  IPv4  24769      0t0  TCP \
 jupiter.example.com:51416->www.example.com:http (CLOSE_WAIT)
npviewer.  9425 tux   49u  IPv4  24814      0t0  TCP \
 jupiter.example.com:43964->www.example.org:http (CLOSE_WAIT)
ssh       17394 tux    3u  IPv4  40654      0t0  TCP \
 jupiter.example.com:35454->saturn.example.com:ssh (ESTABLISHED)

Kernel- und udev-Ereignissequenzanzeige: udevadm monitor

udevadm monitor überwacht die Kernel-uevents und die Ereignisse, die über eine udev-Regel gesendet werden, und sendet den Gerätepfad (DEVPATH) des Ereignisses an die Konsole. Hierbei handelt es sich um eine Ereignissequenz beim Anschließen eines USB-Memorysticks:

[Note]Überwachen von udev-Ereignissen

Nur der root-Benutzer darf udev-Ereignisse mithilfe des Kommandos udevadm überwachen.

UEVENT[1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2
UEVENT[1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2
UEVENT[1138806687] add@/class/scsi_host/host4
UEVENT[1138806687] add@/class/usb_device/usbdev4.10
UDEV  [1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2
UDEV  [1138806687] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2
UDEV  [1138806687] add@/class/scsi_host/host4
UDEV  [1138806687] add@/class/usb_device/usbdev4.10
UEVENT[1138806692] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2
UEVENT[1138806692] add@/block/sdb
UEVENT[1138806692] add@/class/scsi_generic/sg1
UEVENT[1138806692] add@/class/scsi_device/4:0:0:0
UDEV  [1138806693] add@/devices/pci0000:00/0000:00:1d.7/usb4/4-2/4-2.2/4-2.2
UDEV  [1138806693] add@/class/scsi_generic/sg1
UDEV  [1138806693] add@/class/scsi_device/4:0:0:0
UDEV  [1138806693] add@/block/sdb
UEVENT[1138806694] add@/block/sdb/sdb1
UDEV  [1138806694] add@/block/sdb/sdb1
UEVENT[1138806694] mount@/block/sdb/sdb1
UEVENT[1138806697] umount@/block/sdb/sdb1

Informationen zu Sicherheitsereignissen: Prüfung

Das Linux-Prüfrahmenwerk ist ein komplexes Revisionssystem, in dem ausführliche Informationen zu allen sicherheitsrelevanten Ereignissen erfasst werden. Diese Datensätze können anschließend analysiert werden, um festzustellen, ob beispielsweise die Sicherheitsrichtlinien verletzt wurden.

Von X11-Clients verwendete Serverressourcen: xrestop

Mit xrestop werden Statistiken für die serverseitigen Ressourcen der einzelnen angeschlossenen X11-Clients angegeben. Die Ausgabe ähnelt Abschnitt 13.3.4, „Tabelle der Prozesse: top.

xrestop - Display: localhost:0
          Monitoring 40 clients. XErrors: 0
          Pixmaps:   42013K total, Other:     206K total, All:   42219K total

res-base Wins  GCs Fnts Pxms Misc   Pxm mem  Other   Total   PID Identifier
3e00000   385   36    1  751  107    18161K     13K  18175K   ?   NOVELL: SU
4600000   391  122    1 1182  889     4566K     33K   4600K   ?   amaroK - S
1600000    35   11    0   76  142     3811K      4K   3816K   ?   KDE Deskto
3400000    52   31    1   69   74     2816K      4K   2820K   ?   Linux Shel
2c00000    50   25    1   43   50     2374K      3K   2378K   ?   Linux Shel
2e00000    50   10    1   36   42     2341K      3K   2344K   ?   Linux Shel
2600000    37   24    1   34   50     1772K      3K   1775K   ?   Root - Kon
4800000    37   24    1   34   49     1772K      3K   1775K   ?   Root - Kon
2a00000   209   33    1  323  238     1111K     12K   1123K   ?   Trekstor25
1800000   182   32    1  302  285     1039K     12K   1052K   ?   kicker
1400000   157  121    1  231  477      777K     18K    796K   ?   kwin
3c00000   175   36    1  248  168      510K      9K    520K   ?   de.comp.la
3a00000   326   42    1  579  444      486K     20K    506K   ?   [opensuse-
0a00000    85   38    1  317  224      102K      9K    111K   ?   Kopete
4e00000    25   17    1   60   66       63K      3K     66K   ?   YaST Contr
2400000    11   10    0   56   51       53K      1K     55K 22061 suseplugge
0e00000    20   12    1   50   92       50K      3K     54K 22016 kded
3200000     6   41    5   72   84       40K      8K     48K   ?   EMACS
2200000    54    9    1   30   31       42K      3K     45K   ?   SUSEWatche
4400000     2   11    1   30   34       34K      2K     36K 16489 kdesu
1a00000   255    7    0   42   11       19K      6K     26K   ?   KMix
3800000     2   14    1   34   37       21K      2K     24K 22242 knotify
1e00000    10    7    0   42    9       15K    624B     15K   ?   KPowersave
3600000   106    6    1   30    9        7K      3K     11K 22236 konqueror
2000000    10    5    0   21   34        9K      1K     10K   ?   klipper
3000000    21    7    0   11    9        7K    888B      8K   ?   KDE Wallet

Vorgänge

Prozessübergreifende Kommunikation: ipcs

Der Befehl ipcs generiert eine Liste der aktuell verwendeten IPC-Ressourcen:

------ Shared Memory Segments --------
key        shmid      owner     perms      bytes      nattch     status
0x00000000 58261504   tux    600        393216     2          dest
0x00000000 58294273   tux    600        196608     2          dest
0x00000000 83886083   tux    666        43264      2
0x00000000 83951622   tux    666        192000     2
0x00000000 83984391   tux    666        282464     2
0x00000000 84738056   root      644        151552     2          dest

------ Semaphore Arrays --------
key        semid      owner     perms      nsems
0x4d038abf 0          tux    600        8

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

Prozessliste: ps

Mit dem Befehl ps wird eine Liste von Prozessen generiert. Die meisten Parameter müssen ohne Minuszeichen angegeben werden. Über ps --help erhalten Sie eine kurze und auf der entsprechenden man-Seite eine ausführliche Hilfe.

Um alle Prozesse mit Benutzer- und Kommandozeileninformation aufzulisten, verwenden Sie ps axu:

tux@mercury:~> ps axu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0    696   272 ?        S    12:59   0:01 init [5]
root         2  0.0  0.0      0     0 ?        SN   12:59   0:00 [ksoftirqd
root         3  0.0  0.0      0     0 ?        S<   12:59   0:00 [events
[...]
tux    4047  0.0  6.0 158548 31400 ?        Ssl  13:02   0:06 mono-best
tux    4057  0.0  0.7   9036  3684 ?        Sl   13:02   0:00 /opt/gnome
tux    4067  0.0  0.1   2204   636 ?        S    13:02   0:00 /opt/gnome
tux    4072  0.0  1.0  15996  5160 ?        Ss   13:02   0:00 gnome-scre
tux    4114  0.0  3.7 130988 19172 ?        SLl  13:06   0:04 sound-juic
tux    4818  0.0  0.3   4192  1812 pts/0    Ss   15:59   0:00 -bash
tux    4959  0.0  0.1   2324   816 pts/0    R+   16:17   0:00 ps axu

Um zu prüfen, wie viele sshd-Prozesse laufen, verwenden Sie die Option -p zusammen mit dem Befehl pidof, der die Prozess-IDs der gegebenen Prozesse auflistet.

tux@mercury:~> ps -p $(pidof sshd)
  PID TTY      STAT   TIME COMMAND
 3524 ?        Ss     0:00 /usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid
 4813 ?        Ss     0:00 sshd: tux [priv]
 4817 ?        R      0:00 sshd: tux@pts/0

Sie können die Prozessliste entsprechend Ihren Anforderungen formatieren. Mit der Option -L wird eine Liste aller Schlüsselwörter zurückgegeben. Geben Sie den folgenden Befehl ein, um eine nach Speichernutzung aller Prozesse sortierte Liste zu erhalten:

tux@mercury:~> ps ax --format pid,rss,cmd --sort rss
  PID   RSS CMD
    2     0 [ksoftirqd/0]
    3     0 [events/0]
    4     0 [khelper]
    5     0 [kthread]
   11     0 [kblockd/0]
   12     0 [kacpid]
  472     0 [pdflush]
  473     0 [pdflush]
[...]
 4028 17556 nautilus --no-default-window --sm-client-id default2
 4118 17800 ksnapshot
 4114 19172 sound-juicer
 4023 25144 gnome-panel --sm-client-id default1
 4047 31400 mono-best --debug /usr/lib/beagle/Best.exe --autostarted
 3973 31520 mono-beagled --debug /usr/lib/beagle/BeagleDaemon.exe --bg --aut

Nützliche ps-Aufrufe

ps aux --sort Spalte

Hiermit wird die Ausgabe nach Spalte sortiert. Ersetzen Sie Spalte durch Folgendes:

pmem für das Verhältnis des physischen Arbeitsspeichers
pcpu für das Prozessorverhältnis
rss für die Größe des nicht auslagerbaren physischen Arbeitsspeichers (Resident Set Size)
ps axo pid,%cpu,rss,vsz,args,wchan

Zeigt die einzelnen Prozesse, die zugehörige PID, das Prozessorauslastungsverhältnis, die Größe des Arbeitsspeichers (nicht auslagerbar und virtuell), den Namen und den Systemaufruf.

ps axfo pid,args

Zeigt einen Prozessbaum.

Prozessbaum: pstree

Mit dem Befehl pstree wird eine Liste der Prozesse in Form einer Baumstruktur generiert:

tux@mercury:~> pstree
init-+-NetworkManagerD
     |-acpid
     |-3*[automount]
     |-cron
     |-cupsd
     |-2*[dbus-daemon]
     |-dbus-launch
     |-dcopserver
     |-dhcpcd
     |-events/0
     |-gpg-agent
     |-hald-+-hald-addon-acpi
     |      `-hald-addon-stor
     |-kded
     |-kdeinit-+-kdesu---su---kdesu_stub---yast2---y2controlcenter
     |         |-kio_file
     |         |-klauncher
     |         |-konqueror
     |         |-konsole-+-bash---su---bash
     |         |         `-bash
     |         `-kwin
     |-kdesktop---kdesktop_lock---xmatrix
     |-kdesud
     |-kdm-+-X
     |     `-kdm---startkde---kwrapper
[...]

Mit dem Parameter -p werden die Namen durch die jeweiligen Prozess-IDs ergänzt. Damit auch die Kommandozeilen angezeigt werden, verwenden Sie den Parameter -a:

Tabelle der Prozesse: top

Mit dem Kommando top, der für table of processes (Tabelle der Prozesse) steht, wird eine Liste der Prozesse angezeigt, die alle zwei Sekunden aktualisiert wird. Um das Programm zu beenden, drücken Sie die Taste Q. Mit der Option -n 1 wird das Programm nach einmaliger Anzeige der Prozessliste beendet. Im Folgenden finden Sie ein Beispiel für die Ausgabe des Befehls top -n 1:

tux@mercury:~> top -n 1
top - 17:06:28 up  2:10,  5 users,  load average: 0.00, 0.00, 0.00
Tasks:  85 total,   1 running,  83 sleeping,   1 stopped,   0 zombie
Cpu(s):  5.5% us,  0.8% sy,  0.8% ni, 91.9% id,  1.0% wa,  0.0% hi,  0.0% si
Mem:    515584k total,   506468k used,     9116k free,    66324k buffers
Swap:   658656k total,        0k used,   658656k free,   353328k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      16   0   700  272  236 S  0.0  0.1   0:01.33 init
    2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    3 root      10  -5     0    0    0 S  0.0  0.0   0:00.27 events/0
    4 root      10  -5     0    0    0 S  0.0  0.0   0:00.01 khelper
    5 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kthread
   11 root      10  -5     0    0    0 S  0.0  0.0   0:00.05 kblockd/0
   12 root      20  -5     0    0    0 S  0.0  0.0   0:00.00 kacpid
  472 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pdflush
  473 root      15   0     0    0    0 S  0.0  0.0   0:00.06 pdflush
  475 root      11  -5     0    0    0 S  0.0  0.0   0:00.00 aio/0
  474 root      15   0     0    0    0 S  0.0  0.0   0:00.07 kswapd0
  681 root      10  -5     0    0    0 S  0.0  0.0   0:00.01 kseriod
  839 root      10  -5     0    0    0 S  0.0  0.0   0:00.02 reiserfs/0
  923 root      13  -4  1712  552  344 S  0.0  0.1   0:00.67 udevd
 1343 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 khubd
 1587 root      20   0     0    0    0 S  0.0  0.0   0:00.00 shpchpd_event
 1746 root      15   0     0    0    0 S  0.0  0.0   0:00.00 w1_control
 1752 root      15   0     0    0    0 S  0.0  0.0   0:00.00 w1_bus_master1
 2151 root      16   0  1464  496  416 S  0.0  0.1   0:00.00 acpid
 2165 messageb  16   0  3340 1048  792 S  0.0  0.2   0:00.64 dbus-daemon
 2166 root      15   0  1840  752  556 S  0.0  0.1   0:00.01 syslog-ng
 2171 root      16   0  1600  516  320 S  0.0  0.1   0:00.00 klogd
 2235 root      15   0  1736  800  652 S  0.0  0.2   0:00.10 resmgrd
 2289 root      16   0  4192 2852 1444 S  0.0  0.6   0:02.05 hald
 2403 root      23   0  1756  600  524 S  0.0  0.1   0:00.00 hald-addon-acpi
 2709 root      19   0  2668 1076  944 S  0.0  0.2   0:00.00 NetworkManagerD
 2714 root      16   0  1756  648  564 S  0.0  0.1   0:00.56 hald-addon-stor

Standardmäßig ist die Ausgabe nach der Prozessorauslastung sortiert (Spalte %CPU, Tastenkürzel Umschalttaste+P). Mit den folgenden Tastenkürzeln ändern Sie das Sortierfeld:

Umschalttaste+M: Nicht auslagerbarer Arbeitsspeicher (RES)
Umschalttaste+N: Prozess-ID (PID)
Umschalttaste+T: Zeit (TIME+)

Soll die Sortierung nach einem anderen Feld erfolgen, drücken Sie F und wählen Sie ein Feld in der Liste. Mit Umschalttaste+R schalten Sie die Sortierreihenfolge um.

Um nur die Prozesse eines bestimmten Benutzers zu überwachen, kann der Parameter -U UID verwendet werden. Ersetzen Sie UID durch die Benutzer-ID des Benutzers. Mit top -U $(id -u) werden die Prozesse des aktuellen Benutzers angezeigt.

Ändern der Priorität eines Prozesses: nice und renice

Der Kernel bestimmt anhand der Priorität ("Niceness"), welche Prozesse mehr CPU-Zeit erfordern als andere. Je höher die Priorität eines Prozesses, desto weniger CPU-Zeit nimmt er anderen Prozessen. Prioritätsstufen reichen von -20 (niedrigste "Priorität") bis 19. Negative Werte können nur vom root festgelegt werden.

Das Anpassen der Priorität ist nützlich beim Ausführen eines nicht zeitkritischen Prozesses, der lange dauert und viel CPU-Zeit verbraucht, z. B. beim Kompilieren eines Kernels auf einem System, das auch andere Aufgaben ausführt. Indem Sie einen solchen Prozess "nicer" machen, ihm also geringere Priorität einräumen, stellen Sie sicher, dass andere Aufgaben, z. B. ein Webserver, höhere Priorität haben.

Der Aufruf von nice ohne jegliche Parameter gibt die aktuelle Niceness aus:

tux@mercury:~> nice
0

Ausführen des Kommandos nice erhöht die aktuelle Priorität für das angegebene Kommando um 10. Die Verwendung des Kommandos nice -n ermöglicht es Ihnen, eine neue Priorität in Relation zur aktuellen Prioritätsstufe anzugeben.

Zum Ändern der Priorität eines laufenden Prozesses verwenden Sie renice priority -p Prozess-ID, z. B.:

renice +5 3266

Die Priorität aller Prozesse, die einem bestimmten Benutzer gehören, ändern Sie mit der Option -u Benutzer. Prozessgruppen erhalten eine neue Priorität durch die Option -g Prozessgruppen-ID.

Arbeitsspeicher

Auslastung des Arbeitsspeichers: frei

Die Nutzung des Arbeitsspeichers (RAM) und des Auslagerungsspeichers wird mit dem Dienstprogramm free überprüft. Es werden Details zum freien und zum verwendeten Speicher sowie zu den Auslagerungsbereichen angezeigt:

tux@mercury:~> free
            total       used       free     shared    buffers     cached
Mem:       2062844    2047444      15400          0     129580     921936
-/+ buffers/cache:     995928    1066916
Swap:      2104472          0    2104472

Die Optionen -b , -k , -m , -g zeigen die Ausgabe in Byte, KB, MB bzw. GB. Der Parameter -d N gewährleistet, dass die Anzeige alle N Sekunden aktualisiert wird. So wird die Anzeige mit free -d 1.5 beispielsweise alle 1,5 Sekunden aktualisiert.

Ausführliche Angaben zur Arbeitsspeicherauslastung: /proc/meminfo

Mit /proc/meminfo erhalten Sie detailliertere Infomrationen zur Auslastung des Arbeitsspeichers als mit free. free greift sogar auf einige Daten in dieser Datei zurück. Im Folgenden ist ein Beispiel für die Ausgabe bei einem 64-Bit-System dargestellt. Aufgrund der unterschiedlichen Speicherverwaltung weicht diese Ausgabe geringfügig von der Ausgabe bei 32-Bit-Systemen ab):

tux@mercury:~> cat /proc/meminfo
MemTotal:        8182956 kB
MemFree:         1045744 kB
Buffers:          364364 kB
Cached:          5601388 kB
SwapCached:         1936 kB
Active:          4048268 kB
Inactive:        2674796 kB
Active(anon):     663088 kB
Inactive(anon):   107108 kB
Active(file):    3385180 kB
Inactive(file):  2567688 kB
Unevictable:           4 kB
Mlocked:               4 kB
SwapTotal:       2096440 kB
SwapFree:        2076692 kB
Dirty:                44 kB
Writeback:             0 kB
AnonPages:        756108 kB
Mapped:           147320 kB
Slab:             329216 kB
SReclaimable:     300220 kB
SUnreclaim:        28996 kB
PageTables:        21092 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6187916 kB
Committed_AS:    1388160 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      133384 kB
VmallocChunk:   34359570939 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:     2689024 kB
DirectMap2M:     5691392 kB

Die wichtigsten Einträge sind:

MemTotal

Gesamtmenge des nutzbaren RAM

MemFree

Gesamtmenge des nicht genutzten RAM

Puffer

Dateipuffer-Cache im RAM

Im Cache abgelegt

Seiten-Cache im RAM

SwapCached

Seiten-Cache im Auslagerungsspeicher

Aktiv

Bislang genutzter Arbeitsspeicher, der im Normalfall nicht wieder zurückgewonnen wird. Dieser Wert ist die Summe des von anonymen Seiten zurückgewonnenen Arbeitsspeichers (als Active(anon) aufgeführt) und der dateigestützten Seiten (als Active(file) aufgeführt).

Inaktiv

Bislang nicht genutzter Arbeitsspeicher, der zurückgewonnen werden kann. Dieser Wert ist die Summe des von anonymen Seiten zurückgewonnenen Arbeitsspeichers (als Inactive(anon) aufgeführt) und der dateigestützten Seiten (als Inactive(file) aufgeführt).

SwapTotal

Gesamtmenge des Auslagerungsspeichers

SwapFree

Gesamtmenge des nicht genutzten Auslagerungsspeichers

Dirty

Menge des Arbeitsspeichers, der auf die Festplatte geschrieben werden soll

Writeback

Menge des Arbeitsspeichers, der zurzeit auf die Festplatte geschrieben wird

Zugeordnet

Arbeitsspeicher, der mit dem nmap-Kommando zurückgewonnen wird

Slab

Kernel-Datenstruktur-Cache

Committed_AS

Ungefährer Wert für die Gesamtmenge des Arbeitsspeichers (RAM plus Auslagerungsspeicher), die die aktuelle Arbeitslast im schlimmsten Fall erfordern würde.

Arbeitsspeichernutzung durch Prozesse: smaps

Mit Standard-Tools wie top oder ps lässt sich nicht die genaue Menge an Arbeitsspeicher feststellen, die ein bestimmter Prozess belegt. Wenn Sie genaue Daten benötigen, verwenden Sie das smaps-Subsystem, das ab Kernel 2.6.14 zur Verfügung steht. Dieses Subsystem (unter /proc/pid/smaps) zeigt die Anzahl der bereinigten und nicht bereinigten Speicherseiten, die der Prozess mit der ID PID zu diesem Zeitpunkt belegt. Es wird zwischen gemeinsam genutztem und privatem Arbeitsspeicher unterschieden, so dass Sie auf einen Blick erkennen, wie viel Arbeitsspeicher der Prozess allein belegt, also ohne den mit anderen Prozessen gemeinsam genutzten Arbeitsspeicher.

Netzwerke

Netzwerkstatus anzeigen: netstat

netstat zeigt Netzwerkverbindungen, Routing-Tabellen (-r), Schnittstellen (-i), Masquerade-Verbindungen (-M), Multicast-Mitgliedschaften (-g) und Statistiken (-s) an.

tux@mercury:~> netstat -r
Kernel IP routing table
Destination     Gateway         Genmask        Flags  MSS Window  irtt Iface
192.168.2.0     *               255.255.254.0  U        0 0          0 eth0
link-local      *               255.255.0.0    U        0 0          0 eth0
loopback        *               255.0.0.0      U        0 0          0 lo
default         192.168.2.254   0.0.0.0        UG       0 0          0 eth0
tux@mercury:~> netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0   1500   0 1624507 129056      0      0   7055      0      0      0 BMNRU
lo    16436   0   23728      0      0      0  23728      0      0      0 LRU

Wenn Sie Netzwerkverbindungen oder Statistiken anzeigen, können Sie den anzuzeigenden Socket-Typ angeben: TCP (-t), UDP (-u) oder Raw (-r). Mit der Option -p werden die PID und der Name des Programms angezeigt, zu dem das einzelne Socket gehört.

Im folgenden Beispiel werden alle TCP-Verbindungen und die Programme aufgelistet, die diese Verbindungen verwenden.

mercury:~ # netstat -t -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address  Foreign Address       State       PID/Pro
[...]
tcp      0      0 mercury:33513    www.novell.com:www-http ESTABLISHED 6862/fi
tcp      0    352 mercury:ssh      mercury2.:trc-netpoll     ESTABLISHED 19422/s
tcp      0      0 localhost:ssh  localhost:17828         ESTABLISHED -

Nachfolgend werden die Statistiken für das TCP-Protokoll angezeigt:

tux@mercury:~> netstat -s -t
Tcp:
    2427 active connections openings
    2374 passive connection openings
    0 failed connection attempts
    0 connection resets received
    1 connections established
    27476 segments received
    26786 segments send out
    54 segments retransmited
    0 bad segments received.
    6 resets sent
[...]
    TCPAbortOnLinger: 0
    TCPAbortFailed: 0
    TCPMemoryPressures: 0

Interaktiver Netzwerkmonitor: iptraf

Das Dienstprogramm iptraf ist ein Menü-basierter LAN-Monitor (Local Area Network). Es generiert Netzwerkstatistiken, einschließlich TCP- und UDP-Anzahl, Ethernet-Ladeinformationen, IP-Prüfsummenfehler und andere.

Wenn Sie das Kommando ohne eine Option eingeben, erfolgt die Ausführung im interaktiven Modus. Sie können durch grafische Menüs navigieren und die Statistiken auswählen, die iptraf melden soll. Außerdem können Sie die zu untersuchende Netzwerkschnittstelle angeben.

Abbildung 13.1. iptraf Ausführung im interaktiven Modus

iptraf Ausführung im interaktiven Modus

Das Kommando iptraf versteht mehrere Optionen und kann auch im Batch-Modus ausgeführt werden. Das folgende Beispiel sammelt statistische Daten über die Netzwerkschnittstelle eth0 (-i) für die Dauer einer Minute (-t). Die Ausführung erfolgt im Hintergrund (-B) und die Statistik wird in die Datei iptraf.log in Ihrem Home-Verzeichnis (-L) geschrieben.

tux@mercury:~> iptraf -i eth0 -t 1 -B -L ~/iptraf.log

Sie können die Protokolldatei mit dem Kommando more untersuchen:

tux@mercury:~> more ~/iptraf.log
Mon Mar 23 10:08:02 2010; ******** IP traffic monitor started ********
Mon Mar 23 10:08:02 2010; UDP; eth0; 107 bytes; from 192.168.1.192:33157 to \
 239.255.255.253:427
Mon Mar 23 10:08:02 2010; VRRP; eth0; 46 bytes; from 192.168.1.252 to \
 224.0.0.18
Mon Mar 23 10:08:03 2010; VRRP; eth0; 46 bytes; from 192.168.1.252 to \
 224.0.0.18
Mon Mar 23 10:08:03 2010; VRRP; eth0; 46 bytes; from 192.168.1.252 to \
 224.0.0.18
[...]
Mon Mar 23 10:08:06 2010; UDP; eth0; 132 bytes; from 192.168.1.54:54395 to \
 10.20.7.255:111
Mon Mar 23 10:08:06 2010; UDP; eth0; 46 bytes; from 192.168.1.92:27258 to \
 10.20.7.255:8765
Mon Mar 23 10:08:06 2010; UDP; eth0; 124 bytes; from 192.168.1.139:43464 to \
 10.20.7.255:111
Mon Mar 23 10:08:06 2010; VRRP; eth0; 46 bytes; from 192.168.1.252 to \
 224.0.0.18
--More--(7%)

Das Dateisystem /proc

Das Dateisystem /proc ist ein Pseudo-Dateisystem, in dem der Kernel wichtige Daten in Form von virtuellen Dateien speichert. Der CPU-Typ kann beispielsweise mit dem folgenden Befehl abgerufen werden:

tux@mercury:~> cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      : Intel(R) Pentium(R) 4 CPU 3.40GHz
stepping        : 3
cpu MHz         : 2800.000
cache size      : 2048 KB
physical id     : 0
[...]

Mit folgendem Befehl wird die Zuordnung und Verwendung von Interrupts abgefragt:

tux@mercury:~> cat /proc/interrupts
           CPU0
  0:    3577519          XT-PIC  timer
  1:        130          XT-PIC  i8042
  2:          0          XT-PIC  cascade
  5:     564535          XT-PIC  Intel 82801DB-ICH4
  7:          1          XT-PIC  parport0
  8:          2          XT-PIC  rtc
  9:          1          XT-PIC  acpi, uhci_hcd:usb1, ehci_hcd:usb4
 10:          0          XT-PIC  uhci_hcd:usb3
 11:      71772          XT-PIC  uhci_hcd:usb2, eth0
 12:     101150          XT-PIC  i8042
 14:      33146          XT-PIC  ide0
 15:     149202          XT-PIC  ide1
NMI:          0
LOC:          0
ERR:          0
MIS:          0

Einige wichtige Dateien und die enthaltenen Informationen sind:

/proc/devices

Verfügbare Geräte

/proc/modules

Geladene Kernel-Module

/proc/cmdline

Kernel-Kommandozeile

/proc/meminfo

Detaillierte Informationen zur Arbeitsspeichernutzung

/proc/config.gz

gzip-komprimierte Konfigurationsdatei des aktuell aktivierten Kernels

Weitere Informationen sind in der Textdatei /usr/src/linux/Documentation/filesystems/proc.txt verfügbar. (Diese Datei ist verfügbar, wenn das Paket kernel-source installiert wurde.) Informationen zu aktuell laufenden Prozessen finden Sie in den /proc/NNN-Verzeichnissen, wobei NNN für die Prozess-ID (PID) des jeweiligen Prozesses steht. Mit /proc/self/ können die zum aktiven Prozess gehörenden Eigenschaften abgerufen werden:

tux@mercury:~> ls -l /proc/self
lrwxrwxrwx 1 root root 64 2007-07-16 13:03 /proc/self -> 5356
tux@mercury:~> ls -l /proc/self/
total 0
dr-xr-xr-x 2 tux users 0 2007-07-16 17:04 attr
-r-------- 1 tux users 0 2007-07-16 17:04 auxv
-r--r--r-- 1 tux users 0 2007-07-16 17:04 cmdline
lrwxrwxrwx 1 tux users 0 2007-07-16 17:04 cwd -> /home/tux
-r-------- 1 tux users 0 2007-07-16 17:04 environ
lrwxrwxrwx 1 tux users 0 2007-07-16 17:04 exe -> /bin/ls
dr-x------ 2 tux users 0 2007-07-16 17:04 fd
-rw-r--r-- 1 tux users 0 2007-07-16 17:04 loginuid
-r--r--r-- 1 tux users 0 2007-07-16 17:04 maps
-rw------- 1 tux users 0 2007-07-16 17:04 mem
-r--r--r-- 1 tux users 0 2007-07-16 17:04 mounts
-rw-r--r-- 1 tux users 0 2007-07-16 17:04 oom_adj
-r--r--r-- 1 tux users 0 2007-07-16 17:04 oom_score
lrwxrwxrwx 1 tux users 0 2007-07-16 17:04 root -> /
-rw------- 1 tux users 0 2007-07-16 17:04 seccomp
-r--r--r-- 1 tux users 0 2007-07-16 17:04 smaps
-r--r--r-- 1 tux users 0 2007-07-16 17:04 stat
[...]
dr-xr-xr-x 3 tux users 0 2007-07-16 17:04 task
-r--r--r-- 1 tux users 0 2007-07-16 17:04 wchan

Die Adresszuordnung der Programmdateien und Bibliotheken befindet sich in der Datei maps:

tux@mercury:~> cat /proc/self/maps
08048000-0804c000 r-xp 00000000 03:03 17753      /bin/cat
0804c000-0804d000 rw-p 00004000 03:03 17753      /bin/cat
0804d000-0806e000 rw-p 0804d000 00:00 0          [heap]
b7d27000-b7d5a000 r--p 00000000 03:03 11867      /usr/lib/locale/en_GB.utf8/
b7d5a000-b7e32000 r--p 00000000 03:03 11868      /usr/lib/locale/en_GB.utf8/
b7e32000-b7e33000 rw-p b7e32000 00:00 0
b7e33000-b7f45000 r-xp 00000000 03:03 8837       /lib/libc-2.3.6.so
b7f45000-b7f46000 r--p 00112000 03:03 8837       /lib/libc-2.3.6.so
b7f46000-b7f48000 rw-p 00113000 03:03 8837       /lib/libc-2.3.6.so
b7f48000-b7f4c000 rw-p b7f48000 00:00 0
b7f52000-b7f53000 r--p 00000000 03:03 11842      /usr/lib/locale/en_GB.utf8/
[...]
b7f5b000-b7f61000 r--s 00000000 03:03 9109       /usr/lib/gconv/gconv-module
b7f61000-b7f62000 r--p 00000000 03:03 9720       /usr/lib/locale/en_GB.utf8/
b7f62000-b7f76000 r-xp 00000000 03:03 8828       /lib/ld-2.3.6.so
b7f76000-b7f78000 rw-p 00013000 03:03 8828       /lib/ld-2.3.6.so
bfd61000-bfd76000 rw-p bfd61000 00:00 0          [stack]
ffffe000-fffff000 ---p 00000000 00:00 0          [vdso]

procinfo

Wichtige Informationen zum Dateisystem /proc werden mit dem Befehl procinfo zusammengefasst:

tux@mercury:~> procinfo
Linux 2.6.32.7-0.2-default (geeko@buildhost) (gcc 4.3.4) #1 2CPU

Memory:      Total        Used        Free      Shared     Buffers
Mem:       2060604     2011264       49340           0      200664
Swap:      2104472         112     2104360

Bootup: Wed Feb 17 03:39:33 2010    Load average: 0.86 1.10 1.11 3/118 21547

user  :       2:43:13.78   0.8%  page in :   71099181  disk 1:  2827023r 968
nice  :   1d 22:21:27.87  14.7%  page out:  690734737
system:      13:39:57.57   4.3%  page act:  138388345
IOwait:      18:02:18.59   5.7%  page dea:   29639529
hw irq:       0:03:39.44   0.0%  page flt: 9539791626
sw irq:       1:15:35.25   0.4%  swap in :         69
idle  :   9d 16:07:56.79  73.8%  swap out:        209
uptime:   6d 13:07:11.14         context :  542720687

irq  0: 141399308 timer          irq 14:   5074312 ide0
irq  1:     73784 i8042          irq 50:   1938076 uhci_hcd:usb1, ehci_
irq  4:         2                irq 58:         0 uhci_hcd:usb2
irq  6:         5 floppy [2]     irq 66:    872711 uhci_hcd:usb3, HDA I
irq  7:         2                irq 74:        15 uhci_hcd:usb4
irq  8:         0 rtc            irq 82: 178717720 0         PCI-MSI  e
irq  9:         0 acpi           irq169:  44352794 nvidia
irq 12:         3                irq233:   8209068 0         PCI-MSI  l

Verwenden Sie den Parameter -a, wenn Sie alle Informationen anzeigen möchten. Der Parameter -nN aktualisiert die Informationen alle N Sekunden. Beenden Sie in diesem Fall das Programm mit der Taste Q.

Standardmäßig werden die kumulativen Werte angezeigt. Mit dem Parameter -d werden die Einzelwerte generiert. procinfo -dn5 zeigt die Werte an, die sich in den letzten fünf Sekunden geändert haben:

Hardware-Informationen

PCI-Ressourcen: lspci

[Note]Zugriff auf PCI-Konfiguration.

Die meisten Betriebssysteme erfordern root-Benutzer-Privilegien, damit Zugriff auf die PCI-Konfiguration des Computers gewährt wird.

Der Befehl lspci listet die PCI-Ressourcen auf:

mercury:~ # lspci
00:00.0 Host bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE \
    DRAM Controller/Host-Hub Interface (rev 01)
00:01.0 PCI bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE \
    Host-to-AGP Bridge (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM \
    (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM \
    (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM \
    (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM \
    (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corporation 82801DB/DBL (ICH4/ICH4-L) \
    LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801DB (ICH4) IDE \
    Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) \
    SMBus Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM \
    (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
01:00.0 VGA compatible controller: Matrox Graphics, Inc. G400/G450 (rev 85)
02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (LOM) \
    Ethernet Controller (rev 81)

Mit der Option -v werden ausführlichere Informationen angezeigt:

mercury:~ # lspci -v
[...]
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet \
Controller (rev 02)
  Subsystem: Intel Corporation PRO/1000 MT Desktop Adapter
  Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 19
  Memory at f0000000 (32-bit, non-prefetchable) [size=128K]
  I/O ports at d010 [size=8]
  Capabilities: [dc] Power Management version 2
  Capabilities: [e4] PCI-X non-bridge device
  Kernel driver in use: e1000
  Kernel modules: e1000

Die Informationen zur Auflösung der Gerätenamen stammen aus der Datei /usr/share/pci.ids. PCI-IDs, die in dieser Datei fehlen, werden als "Unknown device" (Unbekanntes Gerät) markiert.

Der Parameter -vv generiert alle Informationen, die vom Programm abgefragt werden können. Die reinen numerischen Werte werden mit dem Parameter -n angezeigt.

USB-Geräte: lsusb

Mit dem Befehl lsusb werden alle USB-Geräte aufgelistet. Mit der Option -v wird eine detailliertere Liste ausgegeben. Die detaillierten Informationen werden aus dem Verzeichnis /proc/bus/usb/ gelesen. Das Folgende ist die Ausgabe von lsusb mit den angeschlossenen USB-Geräten Hub, Memorystick, Festplatte und Maus.

mercury:/ # lsusb
Bus 004 Device 007: ID 0ea0:2168 Ours Technology, Inc. Transcend JetFlash \
    2.0 / Astone USB Drive
Bus 004 Device 006: ID 04b4:6830 Cypress Semiconductor Corp. USB-2.0 IDE \
    Adapter
Bus 004 Device 005: ID 05e3:0605 Genesys Logic, Inc.
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 005: ID 046d:c012 Logitech, Inc. Optical Mouse
Bus 001 Device 001: ID 0000:0000

Dateien und Dateisysteme

Bestimmen Sie den Dateityp: Datei

Mit dem Kommando file wird der Typ einer Datei oder einer Dateiliste durch Überprüfung der Datei /usr/share/misc/magic ermittelt.

tux@mercury:~> file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), \
    for GNU/Linux 2.6.4, dynamically linked (uses shared libs), stripped

Mit dem Parameter -f list wird eine zu prüfende Datei mit einer Dateinamensliste angegeben. Mit -z kann file komprimierte Dateien überprüfen:

tux@mercury:~> file /usr/share/man/man1/file.1.gz
usr/share/man/man1/file.1.gz: gzip compressed data, from Unix, max compression
tux@mercury:~> file -z /usr/share/man/man1/file.1.gz
/usr/share/man/man1/file.1.gz: troff or preprocessor input text \
    (gzip compressed data, from Unix, max compression)

Der Parameter -i gibt eine MIME-Typ-Zeichenkette anstelle der herkömmlichen Beschreibung aus.

tux@mercury:~> file -i /usr/share/misc/magic
/usr/share/misc/magic: text/plain charset=utf-8

Dateisysteme und ihre Verwendung: mount, df und du

Mit dem Befehl mount können Sie anzeigen, welches Dateisystem (Gerät und Typ) an welchem Einhängepunkt eingehängt ist:

tux@mercury:~> mount
/dev/sda3 on / type reiserfs (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
udev on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sda1 on /boot type ext2 (rw,acl,user_xattr)
/dev/sda4 on /local type reiserfs (rw,acl,user_xattr)
/dev/fd0 on /media/floppy type subfs (rw,nosuid,nodev,noatime,fs=floppyfss,p

Die Gesamtnutzung der Dateisysteme kann mit dem Befehl df ermittelt werden. Der Parameter -h (oder --human-readable) übersetzt die Ausgabe in ein für normale Benutzer verständliches Format.

tux@mercury:~> df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              11G  3.2G  6.9G  32% /
udev                  252M  104K  252M   1% /dev
/dev/sda1              16M  6.6M  7.8M  46% /boot
/dev/sda4              27G   34M   27G   1% /local

Die Gesamtgröße aller Dateien in einem bestimmten Verzeichnis und dessen Unterverzeichnissen lässt sich mit dem Befehl du ermitteln. Der Parameter -s unterdrückt die Ausgabe von detaillierten Informationen und gibt nur einen Gesamtwert für jedes Argument aus. -h wandelt die Ausgabe wieder in normal lesbare Form um:

tux@mercury:~> du -sh /opt
192M    /opt

Zusätzliche Informationen zu ELF-Binärdateien

Der Inhalt von Binärdateien wird mit dem Dienstprogramm readelf gelesen. Dies funktioniert auch für ELF-Dateien, die für andere Hardware-Architekturen entwickelt wurden:

tux@mercury:~> readelf --file-header /bin/ls
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x402540
  Start of program headers:          64 (bytes into file)
  Start of section headers:          95720 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         9
  Size of section headers:           64 (bytes)
  Number of section headers:         32
  Section header string table index: 31

Dateieigenschaften: stat

Mit dem Befehl stat zeigen Sie die Eigenschaften einer Datei an:

tux@mercury:~> stat /etc/profile
  File: `/etc/profile'
  Size: 9662      	Blocks: 24         IO Block: 4096   regular file
Device: 802h/2050d	Inode: 132349      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-03-20 07:51:17.000000000 +0100
Modify: 2009-01-08 19:21:14.000000000 +0100
Change: 2009-03-18 12:55:31.000000000 +0100

Mit dem Parameter --file-system werden Eigenschaften des Dateisystems angezeigt, in dem sich die angegebene Datei befindet:

tux@mercury:~> stat /etc/profile --file-system
  File: "/etc/profile"
    ID: d4fb76e70b4d1746 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 2581445    Free: 1717327    Available: 1586197
Inodes: Total: 655776     Free: 490312

Benutzerinformationen

Benutzerzugriffsdateien: fuser

Es kann hilfreich sein, zu ermitteln, welche Prozesse oder Benutzer aktuell auf bestimmte Dateien zugreifen. Sie möchten beispielsweise ein Dateisystem aushängen, das unter /mnt eingehängt ist. umount gibt "device is busy" zurück. Mit dem Befehl fuser können Sie anschließend ermitteln, welche Prozesse auf das Gerät zugreifen:

tux@mercury:~> fuser -v /mnt/*

                     USER        PID ACCESS COMMAND
/mnt/notes.txt       tux    26597 f....  less

Nach dem Beenden des Prozesses less, der auf einem anderen Terminal ausgeführt wurde, kann das Aushängen des Dateisystems erfolgreich ausgeführt werden. Bei Verwendung mit der Option -k beendet fuser Prozesse, die ebenfalls auf die Datei zugreifen.

Wer macht was: w

Mit dem Befehl w ermitteln Sie, wer beim System angemeldet ist und was die einzelnen Benutzer gerade machen. Beispiel:

tux@mercury:~> w
 14:58:43 up 1 day,  1:21,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
tux      :0        12:25   ?xdm?   1:23   0.12s /bin/sh /usr/bin/startkde
root     pts/4     14:13    0.00s  0.06s  0.00s w

Wenn sich Benutzer von entfernten Systemen angemeldet haben, können Sie mit dem Parameter -f anzeigen lassen, von welchen Computern aus diese Verbindungen aufgebaut wurden.

Zeit und Datum

Zeitmessung mit time

Der Zeitaufwand von Befehlen lässt sich mit dem Dienstprogramm time ermitteln. Dieses Dienstprogramm ist in zwei Versionen verfügbar: in Shell integriert und als Programm (/usr/bin/time).

tux@mercury:~> time find . > /dev/null

real    0m4.051s
user    0m0.042s
sys     0m0.205s

Darstellung der Daten in Diagrammen: RRDtool

Zahllose Daten im täglichen Leben können im Verhältnis zur Zeit gemessen werden. Hierzu gehören beispielsweise Temperaturänderungen oder auch die Menge der Daten, die Sie über Ihre Netzwerkschnittstelle senden oder empfangen. Mit RRDtool können Sie diese Daten erfassen und in detaillierten, individuell anpassbaren Diagrammen optisch darstellen.

RRDtool ist für die meisten UNIX-Plattformen und Linux-Distributionen erhältlich. Auch openSUSE® enthält RRDtool. Zur Installation verwenden Sie wahlweise YaST oder geben Sie

zypper install rrdtool als root in die Kommandozeile ein.

[Tip]

Für RRDtool stehen Perl-, Python-, Ruby- und PHP-Bindungen zur Auswahl, so dass Sie Ihre Überwachungsskripten in Ihrer bevorzugten Skriptsprache schreiben können.

Funktionsweise von RRDtool

RRDtool ist die Kurzform für Round Robin Database Tool. Round-Robin ist ein Verfahren zur Bearbeitung einer konstanten Datenmenge. Hier kommt ein Umlaufpuffer zum Einsatz, so dass die gelesene Datenzeile keinen Anfang und kein Ende hat. Beim RRDtool werden die Daten in Round-Robin-Datenbanken gespeichert und aus diesen Datenbanken eingelesen.

Wie bereits erwähnt, richtet sich RRDtool an Daten, die sich im Lauf der Zeit verändern. Der Idealfall wäre ein Sensor, der wiederholt Messdaten (z. B. Temperatur oder Geschwindigkeit) über konstante Zeiträume erfasst und dann in einem gegebenen Format exportiert. Solche Daten sind die optimale Grundlage für RRDtool, sie lassen sich mühelos verarbeiten und zur gewünschten Ausgabe zusammenstellen.

Unter Umständen können die Daten nicht automatisch und regelmäßig abgerufen werden. Das Format muss vorverarbeitet werden, bevor die Daten an RRDtool weitergegeben werden können, und häufig müssen Sie RRDtool sogar manuell bedienen.

Im Folgenden wird die grundlegende Verwendung von RRDtool an einem einfachen Beispiel erläutert. Hierbei werden alle drei Phasen im normalen RRDtool-Arbeitsfluss dargestellt: Erstellen einer Datenbank, Aktualisieren der Messwerte und Anzeigen der Ausgabe.

Einfaches Beispiel aus dem Alltag

Angenommen, Sie möchten Informationen zur Arbeitsspeicherauslastung im Linux-System im Lauf der Zeit erfassen und darstellen. Damit das Beispiel anschaulicher wird, messen Sie den jeweils aktuell freien Arbeitsspeicher über einen Zeitraum von 40 Sekunden in Abständen von 4 Sekunden. Während der Messung wurden die drei speicherhungrigsten Anwendungen gestartet und wieder geschlossen: der Webbrowser Firefox, der E-Mail-Client Evolution und das Entwicklungs-Framework Eclipse.

Erfassen von Daten

RRDtool kommt sehr häufig zum Einsatz, wenn es darum geht, den Datenverkehr im Netzwerk zu messen und optisch darzustellen. In diesen Fällen wird SNMP (Simple Network Management Protocol) verwendet. Das Protokoll kann die Netzwerkgeräte nach den entsprechenden Werten ihrer internen Zähler abfragen. Genau diese Werte sollen mit RRDtool gespeichert werden. Weitere Informationen zu SNMP finden Sie unter http://www.net-snmp.org/.

Ihre aktuelle Situation ist anders gelagert: Sie müssen die Daten manuell erfassen. Das Helper-Skript free_mem.sh liest den aktuellen Stand des freien Arbeitsspeichers wiederholt aus und schreibt diese Werte in die Standardausgabe.

tux@mercury:~> cat free_mem.sh
INTERVAL=4
for steps in {1..10}
do
    DATE=`date +%s`
    FREEMEM=`free -b | grep "Mem" | awk '{ print $4 }'`
    sleep $INTERVAL
    echo "rrdtool update free_mem.rrd $DATE:$FREEMEM"
done

Wichtige Hinweise

  • Das Zeitintervall ist auf 4 Sekunden eingestellt und mit dem Kommando sleep implementiert.

  • RRDtool akzeptiert Zeitinformationen in einem speziellen Format, der sogenannten UNIX-Zeit. Diese Zeit ist definiert als der Zeitraum in Sekunden, der seit Mitternacht am 1. Januar 1970 (UTC) vergangen ist. Der Wert 1272907114 bezeichnet beispielsweise den 3. Mai 2010, 17:18:34 Uhr.

  • Der freie Arbeitsspeicher wird mit free -b in Byte wiedergegeben. Verwenden Sie nach Möglichkeit die Grundeinheiten (Byte) anstelle von Vielfachen (z. B. Kilobyte).

  • Die Zeile mit dem Kommando echo ... enthält den künftigen Namen der Datenbankdatei (free_mem.rrd) und bildet damit eine Kommandozeile, mit der die RRDtool-Werte aktualisiert werden.

Nach der Ausführung von free_mem.sh erhalten Sie die folgende Ausgabe (oder ähnlich):

tux@mercury:~> sh free_mem.sh
rrdtool update free_mem.rrd 1272974835:1182994432
rrdtool update free_mem.rrd 1272974839:1162817536
rrdtool update free_mem.rrd 1272974843:1096269824
rrdtool update free_mem.rrd 1272974847:1034219520
rrdtool update free_mem.rrd 1272974851:909438976
rrdtool update free_mem.rrd 1272974855:832454656
rrdtool update free_mem.rrd 1272974859:829120512
rrdtool update free_mem.rrd 1272974863:1180377088
rrdtool update free_mem.rrd 1272974867:1179369472
rrdtool update free_mem.rrd 1272974871:1181806592

Die Ausgabe des Kommandos lässt sich bequem mit

sh free_mem.sh > free_mem_updates.log

in eine Datei umleiten, wodurch die künftige Ausführung erleichtert wird.

Erstellen einer Datenbank

Erstellen Sie die anfängliche Round-Robin-Datenbank für das Beispiel mit dem folgenden Kommando:

rrdtool create free_mem.rrd --start 1272974834 --step=4 \
DS:memory:GAUGE:600:U:U RRA:AVERAGE:0.5:1:24

Wichtige Hinweise

  • Mit diesem Kommando legen Sie eine Datei mit der Bezeichnung free_mem.rrd an, in der die Messwerte nach dem Round-Robin-Verfahren in einer Datenbank gespeichert werden.

  • Die Option --start bestimmt den Zeitpunkt (in UNIX-Zeit), zu dem der erste Wert in die Datenbank aufgenommen wird. In diesem Beispiel liegt der Zeitpunkt um 1 unter dem ersten Zeitwert der Ausgabe free_mem.sh (1272974835).

  • Mit --step wird das Zeitintervall in Sekunden festgelegt, in dem die Messdaten in die Datenbank eingetragen werden.

  • Der Abschnitt DS:memory:GAUGE:600:U:U führt eine neue Datenquelle für die Datenbank ein. Die Bezeichnung lautet memory, der Typ ist gauge, der maximale Zeitraum zwischen zwei Aktualisierungen beträgt 600 Sekunden, und der Mindestwert und Höchstwert im Messbereich sind unbekannt (U).

  • RRA:AVERAGE:0.5:1:24 erstellt ein Round-Robin-Archiv (RRA), dessen gespeicherte Daten mit den Konsolidierungfunktionen (Consolidation Function, CF) bearbeitet werden, die wiederum den Durchschnitt der Datenpunkte berechnen. Am Ende der Zeile stehen drei Argumente für die Konsolidierungsfunktion.

Wenn keine Fehlermeldung angezeigt wird, dann wird die Datenbank free_mem.rrd im aktuellen Verzeichnis erstellt:

tux@mercury:~> ls -l free_mem.rrd
-rw-r--r-- 1 tux users 776 May  5 12:50 free_mem.rrd

Aktualisieren der Datenbankwerte

Nach dem Erstellen muss die Datenbank mit den Messdaten gefüllt werden. Unter Abschnitt 13.11.2.1, „Erfassen von Daten“ haben Sie bereits die Datei free_mem_updates.log vorbereitet, in der sich rrdtool update-Kommandos befinden. Diese Kommandos aktualisieren die Datenbankwerte.

tux@mercury:~> sh free_mem_updates.log; ls -l free_mem.rrd
-rw-r--r--  1 tux users  776 May  5 13:29 free_mem.rrd

Wie Sie sehen, ist die Größe von free_mem.rrd auch nach dem Aktualisieren der Daten unverändert.

Anzeigen der Messwerte

Sie haben nun die Werte gemessen, die Datenbank erstellt und die Messwerte darin gespeichert. Nun können Sie mit der Datenbank arbeiten und die Werte abrufen oder anzeigen.

Zum Abrufen aller Werte aus der Datenbank geben Sie Folgendes in die Kommandozeile ein:

tux@mercury:~> rrdtool fetch free_mem.rrd AVERAGE --start 1272974830 \
--end 1272974871
          memory
1272974832: nan
1272974836: 1.1729059840e+09
1272974840: 1.1461806080e+09
1272974844: 1.0807572480e+09
1272974848: 1.0030243840e+09
1272974852: 8.9019289600e+08
1272974856: 8.3162112000e+08
1272974860: 9.1693465600e+08
1272974864: 1.1801251840e+09
1272974868: 1.1799787520e+09
1272974872: nan

Wichtige Hinweise

  • AVERAGE ruft Durchschnittswertpunkte aus der Datenbank ab, weil nur eine Datenquelle (Abschnitt 13.11.2.2, „Erstellen einer Datenbank“) für die AVERAGE-Verarbeitung definiert ist und keine andere Funktion zur Verfügung steht.

  • Die erste Zeile der Ausgabe enthält den Namen der Datenquelle, wie er in Abschnitt 13.11.2.2, „Erstellen einer Datenbank“ definiert ist.

  • Die linke Ergebnisspalte zeigt einzelne Zeitpunkte, die rechte Spalte dagegen die entsprechenden durchschnittlichen Messwerte in Exponentialschreibweise.

  • Der Begriff nan in der letzten Zeile steht für "not a number" ("keine Zahl").

Nun wird ein Diagramm mit den gespeicherten Werten aus der Datenbank angelegt:

tux@mercury:~> rrdtool graph free_mem.png \
--start 1272974830 \
--end 1272974871 \
--step=4 \
DEF:free_memory=free_mem.rrd:memory:AVERAGE \
LINE2:free_memory#FF0000 \
--vertical-label "GB" \
--title "Free System Memory in Time" \
--zoom 1.5 \
--x-grid SECOND:1:SECOND:4:SECOND:10:0:%X

Wichtige Hinweise

  • free_mem.png ist der Dateiname des zu erstellenden Diagramms.

  • --start und --end schränken den Zeitraum ein, für den das Diagramm angelegt werden soll.

  • --step bestimmt die zeitliche Auflösung (in Sekunden) für das Diagramm.

  • Der Abschnitt DEF:... ist eine Datendefinition mit der Bezeichnung free_memory. Die Daten werden aus der Datenbank free_mem.rrd und der Datenquelle memory gelesen. Die Durchschnittswert-Punkte werden berechnet, weil in Abschnitt 13.11.2.2, „Erstellen einer Datenbank“ keine anderen Punkte definiert sind.

  • Der Abschnitt LINE... bestimmt die Eigenschaften der Linie, die im Diagramm gezogen werden soll. Die Linie ist 2 Pixel breit, die Daten stammen aus der Definition free_memory, und die Farbe ist rot.

  • --vertical-label enthält die Bezeichnung, mit der die y-Achse beschriftet werden soll, und --title enthält die Bezeichnung für das gesamte Diagramm.

  • --zoom bestimmt den Zoomfaktor für das Diagramm. Dieser Wert muss größer als Null sein.

  • --x-grid gibt an, wie die Diagrammlinien und ihre Beschriftungen in das Diagramm eingetragen werden sollen. In diesem Beispiel werden die Linien in Abständen von einer Sekunde gezogen, die Hauptdiagrammlinien dagegen in Abständen von vier Sekunden. Die Beschriftungen werden in Abständen von 10 Sekunden unter die Hauptdiagrammlinien platziert.

Abbildung 13.2. Beispiel eines Diagramms mit RRDtool

Beispiel eines Diagramms mit RRDtool

Weiterführende Informationen

RRDtool ist ein äußerst komplexes Tool mit zahlreichen Unterkommandos und Kommandozeilenoptionen. Ein Teil davon ist leicht verständlich, aber Sie müssten sich intensiv mit RRDtool befassen, damit Sie exakt die gewünschten Ergebnisse erhalten und gemäß Ihren Anforderungen abstimmen können.

Neben der man-Seite für RRDtool (man 1 rrdtool), auf der Sie lediglich grundlegende Informationen finden, sollten Sie die RRDtool-Homepage betrachten. Hier finden Sie eine ausführliche Dokumentation für das Kommando rrdtool und alle Unterkommandos. Darüber hinaus stehen verschiedene Einführungen zur Verfügung, in denen Sie den normalen RRDtool-Arbeitsfluss kennenlernen.

Wenn Sie sich für die Überwachung des Netzwerkverkehrs interessieren, werfen Sie einen Blick auf MRTG. Mit MRTG (Multi Router Traffic Grapher) erstellen Sie Diagramme zu den Aktivitäten der verschiedensten Netzwerkgeräte. RRDtool lässt sich schnell und einfach einbinden.