Inhaltsverzeichnis
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.
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 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
Die erste Zeile der vmstat-Ausgabe enthält stets die Durchschnittswerte seit dem letzten Neustart. |
Die Spalten zeigen Folgendes:
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.
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.
Menge des zurzeit genutzten Auslagerungsspeichers.
Menge des nicht genutzten Arbeitsspeichers.
Bislang nicht genutzter Arbeitsspeicher, der zurückgewonnen werden kann. Diese Spalte ist nur dann sichtbar, wenn vmstat mit dem Parameter -a
aufgerufen wird (empfohlen).
Diese Spalte ist nur dann sichtbar, wenn vmstat mit dem Parameter -a
aufgerufen wird (empfohlen).
Dateipuffer-Cache im RAM. Diese Spalte ist nicht sichtbar, wenn vmstat mit dem Parameter -a
aufgerufen wird (empfohlen).
Seiten-Cache im RAM. Diese Spalte ist nicht sichtbar, wenn vmstat mit dem Parameter -a
aufgerufen wird (empfohlen).
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.
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.
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.
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.
Interrupts pro Sekunde. Ein hoher Wert weist auf rege E/A (Netzwerk und/oder Festplatte) hin.
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.
Prozentuale Auslastung des Prozessors durch Benutzerprozesse.
Prozentuale Auslastung des Prozessors durch Systemprozesse.
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
und , ob der Rechner mit ausreichend Prozessorleistung ausgestattet ist.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.
Prozentualer Anteil an der Prozessorzeit, der von virtuellen Maschinen genutzt wird.
Weitere Optionen siehe vmstat --help
.
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.
sysstat-Paket | |
---|---|
sar und sadc gehören zum |
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/sa
geschrieben, wobei TT
TT
den aktuellen Tag bezeichnet. Wenn eine Datei bereits vorhanden ist, wird sie archiviert.
Der Übersichtsbericht wird in /var/log/sa/sar
geschrieben, wobei TT
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.
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/sa
zu generieren, wobei TT
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.
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
(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 über einen längeren Zeitraum gleich Null, arbeiten die Prozessoren mit Vollauslastung.
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 (
und ) 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).
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
(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 zeigt die Anzahl der gescannten Seiten ( ) im Verhältnis zur Anzahl der Seiten, die aus dem Arbeitsspeicher-Cache oder dem Auslagerungsspeicher-Cache ( ) 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.
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 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
für , und auf allen Festplatten. Beständig hohe Werte in den Spalten und können darauf hinweisen, dass nicht ausreichend freier Speicherplatz auf der Festplatte zur Verfügung steht.
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
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.
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.
sysstat-Paket | |
---|---|
iostat gehört zum |
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
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
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.
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)
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:
Ü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
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.
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
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
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
--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) |
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.
Zeigt einen Prozessbaum.
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
:
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 Umschalttaste+P). Mit den folgenden Tastenkürzeln ändern Sie das Sortierfeld:
, TastenkürzelUmschalttaste+M: Nicht auslagerbarer Arbeitsspeicher ( ) |
Umschalttaste+N: Prozess-ID ( ) |
Umschalttaste+T: Zeit ( ) |
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
verwendet werden. Ersetzen Sie UID
UID
durch die Benutzer-ID des Benutzers. Mit top -U $(id -u) werden die Prozesse des aktuellen Benutzers angezeigt.
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
, z. B.:
Prozess-ID
renice +5 3266
Die Priorität aller Prozesse, die einem bestimmten Benutzer gehören, ändern Sie mit der Option -u
. Prozessgruppen erhalten eine neue Priorität durch die Option Benutzer
-g
.
Prozessgruppen-ID
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.
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:
Gesamtmenge des nutzbaren RAM
Gesamtmenge des nicht genutzten RAM
Dateipuffer-Cache im RAM
Seiten-Cache im RAM
Seiten-Cache im Auslagerungsspeicher
Bislang genutzter Arbeitsspeicher, der im Normalfall nicht wieder zurückgewonnen wird. Dieser Wert ist die Summe des von anonymen Seiten zurückgewonnenen Arbeitsspeichers (als
aufgeführt) und der dateigestützten Seiten (als aufgeführt).Bislang nicht genutzter Arbeitsspeicher, der zurückgewonnen werden kann. Dieser Wert ist die Summe des von anonymen Seiten zurückgewonnenen Arbeitsspeichers (als
aufgeführt) und der dateigestützten Seiten (als aufgeführt).Gesamtmenge des Auslagerungsspeichers
Gesamtmenge des nicht genutzten Auslagerungsspeichers
Menge des Arbeitsspeichers, der auf die Festplatte geschrieben werden soll
Menge des Arbeitsspeichers, der zurzeit auf die Festplatte geschrieben wird
Arbeitsspeicher, der mit dem nmap-Kommando zurückgewonnen wird
Kernel-Datenstruktur-Cache
Ungefährer Wert für die Gesamtmenge des Arbeitsspeichers (RAM plus Auslagerungsspeicher), die die aktuelle Arbeitslast im schlimmsten Fall erfordern würde.
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/
) zeigt die Anzahl der bereinigten und nicht bereinigten Speicherseiten, die der Prozess mit der ID pid
/smapsPID
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.
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
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.
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
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]
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:
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.
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
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
wird eine zu prüfende Datei mit einer Dateinamensliste angegeben. Mit list
-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
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
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
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
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.
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.
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.
Für RRDtool stehen Perl-, Python-, Ruby- und PHP-Bindungen zur Auswahl, so dass Sie Ihre Überwachungsskripten in Ihrer bevorzugten Skriptsprache schreiben können. |
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.
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.
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 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
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.
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.
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.