Es ist oft einfach und oft groß, die regelmäßig erfassten Daten grafisch darzustellen. Ich denke jedoch, dass die Hürden für unerfahrene Menschen hoch sind, deshalb hoffe ich, einen Zugang zu bieten. (Der Rest ist Python Mission)
Lassen Sie uns als Beispiel die Informationen von / proc / meminfo
grafisch darstellen, die regelmäßig mit Shell und Python erfasst werden.
Es wird davon ausgegangen, dass die Meminfo-Informationen im Format "
Das Format von meminfo sieht so aus
MemTotal: 511476 kB
MemFree: 269240 kB
Buffers: 13936 kB
Cached: 56044 kB
SwapCached: 0 kB
Active: 36944 kB
Inactive: 47324 kB
Active(anon): 14648 kB
Inactive(anon): 208 kB
Active(file): 22296 kB
Inactive(file): 47116 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 511476 kB
LowFree: 269240 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 14304 kB
Mapped: 16548 kB
Shmem: 568 kB
Slab: 7416 kB
SReclaimable: 2600 kB
SUnreclaim: 4816 kB
KernelStack: 504 kB
PageTables: 784 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 255736 kB
Committed_AS: 195212 kB
VmallocTotal: 1548288 kB
VmallocUsed: 8428 kB
VmallocChunk: 1350896 kB
Angenommen, Sie möchten den Wert von "Committed_AS" in meminfo grafisch darstellen
$ find . -name 'meminfo.log' | sort | xargs grep Committed_AS
Dann wird die folgende Ausgabe erhalten.
./20160211/190409/meminfo.log:Committed_AS: 389260 kB
./20160211/191528/meminfo.log:Committed_AS: 389300 kB
./20160211/192648/meminfo.log:Committed_AS: 394600 kB
Dies wird von gawk weiter verarbeitet, um "Datumsnummer" zu formatieren.
$ find . -name 'meminfo.log' | sort | xargs grep Committed_AS | gawk 'match($0, /\/([0-9]+)\/([0-9]+).*[0-9]+ kB/, a) {print a[1] a[2], $2}'
20160211190409 389260
20160211191528 389300
20160211192648 394600
Dann zeichnen Sie dies mit Matplot
plot_date.py
#!/usr/bin/env python3
import matplotlib.pyplot as plt
from datetime import datetime as dt
import sys
[date, y] = zip(*[l.split() for l in sys.stdin])
date=[dt.strptime(d, "%Y%m%d%H%M%S") for d in date]
plt.plot(date,y)
plt.show()
$ find . -name 'meminfo.log' | sort | xargs grep Committed_AS | gawk 'match($0, /\/([0-9]+)\/([0-9]+).*[0-9]+ kB/, a) {print a[1] a[2], $2}' | python3 plot_date.py
Recommended Posts