Log frei und oben

Log frei und oben

Ich möchte auf meinem Server eine Bash erstellen, die alle 60 Sekunden einen Teil der Ausgabe von „free“ und „top“ protokolliert. Ich weiß, wie man den Cron-Job einrichtet, habe aber keine Ahnung, wie ich die Ausgabe von „free“ und „top“ erhalte, sie analysiere und in einer Datei speichere (anhänge).

Wenn ich beispielsweise „top“ ausführe, möchte ich nur den Teil wie folgt speichern:

%CPU(s): 18,2 us,

Und wenn ich „free“ ausführe, möchte ich nur die Spalte „verfügbar“ der ersten Zeile (Mem:) speichern.

Wie mache ich also diese Bash in CentOS 7?

Antwort1

Wenn Sie jede Minute eine Überwachung durchführen möchten, würde ich empfehlen, die durchschnittliche CPU-Auslastung anstelle der aktuellen Nutzung zu verwenden.

cat /proc/loadavg | awk '{print "Load last minute:", $1}'

Diese Zeile gibt die durchschnittliche CPU-Auslastung der letzten Minute an. Dies ist genauer als der Prozentsatz der verwendeten CPU, da Sie möglicherweise einen Spitzenwert von 100 % haben und diesen speichern können, auch wenn Ihre durchschnittliche Auslastung viel geringer ist.

Antwort2

Verwendung von awk:

top -n 1 | awk '/^%Cpu\(s\)/ {print "%Cpu(s)", $2, "us"}'
free | awk '/^Mem:/ {print $7}'

verwandte Informationen