Top

Aus LUG Fulda

Wechseln zu: Navigation, Suche

Was macht top?

top bietet eine dynamische Echtzeit-Ansicht eines laufenden Linux-Systems. Es kann Systeminformationen anzeigen, sowie eine Liste von Prozessen welche gerade von dem Linux-Kernel gemanaged werden.

Ausgabe von top in eine Datei umleiten

Aufgrund eines OOM-Killers (out-of-memory Killers) lässt man sich einiges einfallen um die Ursache zu finden. Ich wollte mich aber nicht alleine auf atsar verlassen, um zum Zeitpunkt des Events möglicherweise die richtigen Daten zu sammeln.

Eine weitere Idee war dann die Ausgabe von top via cron-job regelmäßig in eine Datei schreiben zu lassen, um bei erneuter Störung einen Anhaltspunkt zu haben, welche Ursache für den OOM-Killer in Frage kommt.

"Eigentlich ganz einfach"...(dachte ich mir ganz naiv)

top > /tmp/test.log

Ahja... so geht es schonmal nicht. Die Ausgabe hing einfach. Die Man-Page von top brachte dann Licht ins Dunkel.

  • -b für Batchmode
  • -n für die Anzahl der Wiederholungen
  • -d delay

Auch fleißiges googlen förderte leider nichts brauchbares zu Tage. Auf einem Referenz-System lief der das Script jedoch einwandfrei. Ich habe dann zusätzlich die Umgebungsvariablen mit in die Datei geschrieben.

set >> $log

Hier konnte ich dann die TERM-Variable auswerten. Mit dieser Variable ließ sich dann auch das Script auf dem Zielsystem einsetzen.

Nach einigem Ausprobieren und analysieren sah dann meine Lösung wie folgt aus:

#!/bin/bash
export log=/var/log/system-pruefung.log
export TERM=dumb
echo ------------------------------ >> $log
date >> $log
echo ------------------------------ >> $log
top -b -d 2 -n 1 >> $log 2>&1
Entscheidend ist die exportierte TERM-Variable. top verweigerte auf dem besagtem System (Debian sarge) standhaft seine Ausgabe cron-gesteuert zu tätigen. Auf einem Referenzsystem war dies ohne Probleme möglich.

Wenn jemand die Erklärung dazu weiß, möge er sie bitte ergänzen.

Meine Werkzeuge