Vielleicht möchten Sie Sysmon ausprobieren . Obwohl nicht so schick wie Glances, ist es sehr einfach und leicht zu bedienen.
Wenn Sie sich in Python schmutzig machen und ein wenig Skripting ausführen möchten, finden Sie hier einige Grundlagen der Systemüberwachung mit Python, um Ihnen den Einstieg zu erleichtern.
Sie benötigen ein externes Modul, das aufgerufen wird psutil
, um die meisten Dinge zu überwachen. Es ist am einfachsten, ein externes Modul-Installationsprogramm zu verwenden, anstatt von der Quelle aus zu erstellen.
Hinweis: Diese Beispiele sind in Python 2.7 geschrieben
sudo apt-get install pip
sudo pip install psutil
Nachdem wir die Module installiert haben, können wir mit dem Codieren beginnen.
Erstellen Sie zunächst eine Datei mit dem Namen usage.py
.
gedit ~/usage.py
Beginnen Sie mit dem Import psutil
import psutil
Erstellen Sie dann eine Funktion, um den Prozentsatz zu überwachen, mit dem Ihre CPU-Kerne ausgeführt werden.
def cpu_perc():
cpu_perc = psutil.cpu_percent(interval=1, percpu=True)
for i in range(len(cpu_perc)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
Lassen Sie uns das ein wenig aufschlüsseln, sollen wir?
In der ersten Zeile wird cpu_num = psutil.cpu_percent(interval=1, percpu=True)
der Prozentsatz ermittelt, mit dem die Kerne in Ihrer CPU ausgeführt werden, und einer Liste mit dem Namen zugewiesen cpu_perc
.
Diese Schleife hier
for i in range(len(cpu_num)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
ist eine for-Schleife, die den aktuellen Prozentsatz jedes Ihrer CPU-Kerne ausgibt.
Fügen wir die RAM-Auslastung hinzu.
Erstellen Sie eine Funktion mit dem Namen ram_perc
.
def ram_perc():
mem = psutil.virtual_memory()
mem_perc = mem.percent
print "RAM: ", mem_perc, "%"
psutil.virtual_memory
gibt einen Datensatz an, der verschiedene Fakten über den Arbeitsspeicher Ihres Computers enthält.
Als Nächstes können Sie einige Fakten zu Ihrem Netzwerk hinzufügen.
def net():
net = psutil.net_io_counters()
mbytes_sent = float(net.bytes_sent) / 1048576
mbytes_recv = float(net.bytes_recv) / 1048576
print "MB sent: ", mbytes_sent
print "MB received: ", mbytes_recv
Da psutil.net_io_counters()
wir nur Informationen über die in Bytes gesendeten und empfangenen Pakete erhalten, war eine Konvertierung erforderlich.
Fügen Sie diese Funktion hinzu, um Informationen zum Swap Space zu erhalten.
def swap_perc():
swap = psutil.swap_memory()
swap_perc = swap.percent
Dieser ist ziemlich einfach.
Die Temperatur ist ziemlich schwer zu bestimmen, daher müssen Sie möglicherweise eigene Untersuchungen durchführen, um herauszufinden, was mit Ihrer Hardware funktioniert. Sie müssen den Inhalt einer bestimmten Datei anzeigen.
Die Festplattennutzung ist viel einfacher als die Temperatur. Alles, was Sie tun müssen, ist, die zu überwachende Festplatte (dh:) /
durch eine bestimmte Funktion zu führen.
def disks():
if len(sys.argv) > 1:
for disk in range(1, len(sys.argv)):
tmp = psutil.disk_usage(sys.argv[disk])
print sys.argv[disk], "\n"
print "Megabytes total: ",
print str(float(tmp.total) / 1048576)
print "Megabytes used: ",
print str(float(tmp.used) / 1048576)
print "Megabytes free: ",
print str(float(tmp.free) / 1048576)
print "Percentage used: ",
print tmp.percent, "\n"
Die ursprüngliche Ausgabe von psutil.disk_usage
ist dies,
>>>psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
Sie können aber auch nur erhalten total
, used
, free
, oder percent
.
Das fertige Programm: (die oben genannten Funktionen wurden kombiniert)
import psutil, os, sys
mem_perc = 0 #init var
swap_perc = 0 #init var
mbytes_sent = 0 #init var
mbytes_recv = 0 #init var
cpu_perc = 0 #init var
swap = 0 #init var
mem = 0 #init var
net = 0 #init var
def disp(degree):
global cpu_perc
global swap
global swap_perc
global mem
global mem_perc
global net
global mbytes_sent
global mbytes_recv
cpu_perc = psutil.cpu_percent(interval=1, percpu=True)
swap = psutil.swap_memory()
swap_perc = swap.percent
mem = psutil.virtual_memory()
mem_perc = mem.percent
net = psutil.net_io_counters()
mbytes_sent = float(net.bytes_sent) / 1048576
mbytes_recv = float(net.bytes_recv) / 1048576
os.system('clear') #clear the screen
print "-"*30
print "CPU"
print "-"*30
print "CPU Temperature: " , degree, "'C"
for i in range(len(cpu_perc)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
print "-"*30
print "MEMORY"
print "-"*30
print "RAM: ", mem_perc, "%"
print "Swap: ", swap_perc, "%"
print "-"*30
print "NETWORK"
print "-"*30
print "MB sent: ", mbytes_sent
print "MB received: ", mbytes_recv
print "-"*30
print "DISKS"
print "-"*30
if len(sys.argv) > 1:
for disk in range(1, len(sys.argv)):
tmp = psutil.disk_usage(sys.argv[disk])
print sys.argv[disk], "\n"
print "Megabytes total: ",
print str(float(tmp.total) / 1048576)
print "Megabytes used: ",
print str(float(tmp.used) / 1048576)
print "Megabytes free: ",
print str(float(tmp.free) / 1048576)
print "Percentage used: ",
print tmp.percent, "\n"
def main():
print("Press Ctrl+C to exit")
while True:
temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
temp = float(temp) / 1000
disp(temp)
main()
Die Leitung temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
funktioniert möglicherweise nicht mit Ihrer Hardwarekonfiguration.
Führen Sie dieses Programm über die Befehlszeile aus. Übergeben Sie die zu überwachenden Datenträger als Argumente über die Befehlszeile.
$ python usage.py /
Press Ctrl+C to exit
------------------------------
CPU
------------------------------
CPU Temperature: 39.0 'C
CPU Core 1 : 4.8 %
CPU Core 2 : 1.0 %
CPU Core 3 : 0.0 %
CPU Core 4 : 4.9 %
------------------------------
MEMORY
------------------------------
RAM: 33.6 %
Swap: 6.4 %
------------------------------
NETWORK
------------------------------
MB sent: 2.93382358551
MB received: 17.2131490707
------------------------------
DISKS
------------------------------
/
Megabytes total: 13952.484375
Megabytes used: 8542.6640625
Megabytes free: 4678.5703125
Percentage used: 61.2
/media/calvin/Data
Megabytes total: 326810.996094
Megabytes used: 57536.953125
Megabytes free: 269274.042969
Percentage used: 17.6
Hoffe das hilft! Kommentar, wenn Sie Fragen haben.
https://github.com/calthecoder/sysmon-1.0.1