Potresti provare sysmon . Sebbene non sia elegante come Glances, è molto semplice e facile da usare.
Se vuoi sporcarti e fare un po 'di scripting in Python, ecco alcune basi del monitoraggio del sistema con Python per iniziare.
Avrai bisogno di un modulo esterno chiamato psutil
per monitorare la maggior parte delle cose. È più semplice utilizzare un programma di installazione del modulo esterno invece di creare dal sorgente.
Nota: questi esempi sono scritti in Python 2.7
sudo apt-get install pip
sudo pip install psutil
Ora che abbiamo installato i moduli, possiamo iniziare a scrivere codice.
Innanzitutto, crea un file chiamato usage.py
.
gedit ~/usage.py
Inizia importando psutil
import psutil
Quindi, crea una funzione per monitorare la percentuale di esecuzione dei core della CPU.
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]), "%"
Dividiamolo un po ', vero?
La prima riga, cpu_num = psutil.cpu_percent(interval=1, percpu=True)
trova la percentuale di esecuzione dei core nella CPU e la assegna a un elenco chiamato cpu_perc
.
Questo loop proprio qui
for i in range(len(cpu_num)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
è un ciclo for che stampa la percentuale corrente di ciascuno dei core della CPU.
Aggiungiamo l'utilizzo della RAM.
Crea una funzione chiamata ram_perc
.
def ram_perc():
mem = psutil.virtual_memory()
mem_perc = mem.percent
print "RAM: ", mem_perc, "%"
psutil.virtual_memory
fornisce un set di dati contenente diversi fatti sulla RAM del computer.
Successivamente, puoi aggiungere alcuni fatti sulla tua rete.
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
Poiché psutil.net_io_counters()
ci fornisce solo informazioni sui pacchetti inviati e ricevuti in byte, era necessaria una conversione.
Per ottenere alcune informazioni sullo spazio di swap, aggiungi questa funzione.
def swap_perc():
swap = psutil.swap_memory()
swap_perc = swap.percent
Questo è piuttosto semplice.
La temperatura è un po 'difficile da fare, quindi potresti dover fare qualche ricerca per capire cosa funzionerà con il tuo hardware. Dovrai visualizzare il contenuto di un determinato file.
L'uso del disco è molto più semplice della temperatura. Tutto quello che devi fare è passare il disco che vuoi monitorare (cioè:) /
attraverso una determinata funzione.
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"
L'output originale di psutil.disk_usage
è questo,
>>>psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
ma si può anche solo ricevere total
, used
, free
, o percent
.
Il programma completato: (le funzioni di cui sopra sono state combinate)
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()
La linea temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
potrebbe non funzionare con la configurazione hardware.
Esegui questo programma dalla riga di comando. Passare i dischi che si desidera monitorare come argomenti dalla riga di comando.
$ 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
Spero che sia di aiuto! Commenta se hai domande.
https://github.com/calthecoder/sysmon-1.0.1