Frage

In dieser Frage Jemand fragte nach Möglichkeiten, die Festplattennutzung unter Linux anzuzeigen.Ich würde diesen Schritt gerne einen Schritt weiter auf dem Cli-Pfad gehen ...Wie wäre es mit einem Shell-Skript, das die Ausgabe einer vernünftigen Antwort auf die vorherige Frage übernimmt und daraus eine Grafik/ein Diagramm generiert (Ausgabe in einer PNG-Datei oder so)?Das ist vielleicht etwas zu viel Code für eine normale Frage, aber ich vermute, dass jemand schon irgendwo einen Einzeiler herumliegen hat ...

War es hilfreich?

Lösung

ich würde empfehlen Munin.Es ist genau für solche Zwecke konzipiert – die grafische Darstellung der CPU-Auslastung, der Speicherauslastung, der Festplattennutzung und dergleichen.Ein bisschen wie MRTG (aber MRTG zielt in erster Linie auf die grafische Darstellung des Router-Verkehrs ab; die grafische Darstellung von allem außer der Bandbreite ist damit sehr hackig)

Das Schreiben von Munin-Plugins ist sehr einfach (das war eines der Projektziele).Sie können in fast allem geschrieben werden (Shell-Skript, Perl/Python/Ruby/usw., C, alles, was ausgeführt werden kann und eine Ausgabe erzeugt).Das Plugin-Ausgabeformat ist grundsätzlich disc1usage.value 1234.Und das Debuggen der Plugins ist sehr einfach (im Vergleich zu MRTG)

Ich habe es auf meinem Laptop eingerichtet, um die Disc-Nutzung, die Bandbreitennutzung (durch Abrufen von Daten aus der Systemsteuerung meines Internetdienstanbieters werden meine beiden Download-„Bins“, Uploads und Newsgroup-Nutzung grafisch dargestellt), den Auslastungsdurchschnitt und die Anzahl der Prozesse zu überwachen.Nachdem ich es installiert hatte (derzeit etwas schwierig unter OS

Ich würde beschreiben, wie es eingerichtet ist, aber die Munin-Site wird das weitaus besser machen, als ich es könnte!

Es gibt eine Beispielinstallation Hier

Einige Alternativen sind Nagios und Kakteen.Sie könnten auch etwas Ähnliches mit rrdtool schreiben.Munin, MRTG und Cacti sind im Grunde allesamt weitaus benutzerfreundlichere Systeme, die auf diesem Grafiktool basieren.

Wenn Sie etwas wirklich, wirklich Einfaches wollen, können Sie es tun.

import os
import time
while True:
    disc_usage = os.system("df -h / | awk '{print $3}'")
    log = open("mylog.txt")
    log.write(disc_usage + "\n")
    log.close()
    time.sleep(60*5)

Dann..

f = open("mylog.txt")
lines = f.readlines()

# Convert each line to a float number
lines = [float(cur_line) for cur_line in lines]

# Get the biggest and smallest
biggest = max(lines)
smallest = min(lines)

for cur_line in lines:
    base = (cur_line - smallest) + 1 # make lowest value 1
    normalised = base / (biggest - smallest) # normalise value between 0 and 1
    line_length = int(round(normalised * 28)) # make a graph between 0 and 28 characters wide
    print "#" * line_length

Dadurch wird ein einfaches ASCII-Diagramm der Disc-Nutzung erstellt.ICH wirklich wirklich Ich empfehle Ihnen nicht, so etwas zu verwenden.Warum?Die Protokolldatei wird immer größer und größer.Die Grafik wird immer langsamer.RRDTool verwendet ein rollierendes Datenbanksystem zum Speichern seiner Daten, sodass die Datei nie größer als etwa 50–100 KB wird und die grafische Darstellung durchweg schnell erfolgt, da die Datei eine feste Länge hat.

Zusamenfassend.Wenn Sie möchten, dass sich fast alles problemlos grafisch darstellen lässt, verwenden Sie Munin.Wenn Sie etwas Kleineres und Eigenständiges wollen, schreiben Sie etwas mit RRDTool.

Andere Tipps

Wenn Ihnen einige ASCII-Zeichen „grafisch“ genug sind, kann ich es empfehlen ncdu.Es ist ein sehr schönes interaktives CLI-Tool, das mir sehr hilft, große Verzeichnisse herunterzufahren, ohne cd bigdir auszuführen;du -hs immer und immer wieder.

Wir haben es bei der Arbeit selbst gerollt RRDtool (das Datenspeicher-Backend für Tools wie MRTG).Wir führen alle 5 Minuten ein Perl-Skript aus, das ein Du pro Partition erstellt, es in eine RRD-Datenbank stopft und dann die Diagrammfunktion von RRD zum Erstellen von Diagrammen verwendet.Es dauert eine Weile, herauszufinden, wie man die .rrd-Dateien einrichtet (zum Beispiel musste ich RPN neu lernen, um einige der Berechnungen durchzuführen, die ich durchführen wollte), aber wenn Sie einige Daten haben, die Sie im Zeitverlauf grafisch darstellen möchten, Das RRD-Tool ist eine gute Wahl.

Ich denke, es gibt ein paar Möglichkeiten:

  1. Für eine reine CLI-Lösung verwenden Sie etwas wie gnuplot.Sehen Hier zum Beispiel Nutzung.Ich habe Gnuplot seit meiner Studienzeit nicht mehr verwendet :-)

  2. Nicht wirklich eine reine CLI-Lösung, aber laden Sie so etwas herunter JFreeChart und schreiben Sie eine einfache Java-App, die stdin liest und Ihr Diagramm erstellt.

Hoffe das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top