Es posible que desee probar sysmon . Aunque no es tan elegante como Glances, es muy sencillo y fácil de usar.
Si desea ensuciarse y hacer un pequeño script en Python, aquí hay algunos conceptos básicos de monitoreo del sistema con Python para comenzar.
Necesitará un módulo externo llamado psutil
para monitorear la mayoría de las cosas. Es más fácil usar un instalador de módulo externo en lugar de construir desde la fuente.
Nota: Estos ejemplos están escritos en Python 2.7.
sudo apt-get install pip
sudo pip install psutil
Ahora que tenemos los módulos instalados, podemos comenzar a codificar.
Primero, cree un archivo llamado usage.py
.
gedit ~/usage.py
Comience importando psutil
import psutil
Luego, cree una función para monitorear el porcentaje en el que se ejecutan los núcleos de su 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]), "%"
Analicemos eso un poco, ¿de acuerdo?
La primera línea, cpu_num = psutil.cpu_percent(interval=1, percpu=True)
encuentra el porcentaje en el que se ejecutan los núcleos en su CPU y lo asigna a una lista llamada cpu_perc
.
Este bucle justo aquí
for i in range(len(cpu_num)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
es un bucle for que imprime el porcentaje actual de cada uno de los núcleos de tu CPU.
Agreguemos el uso de RAM.
Crea una función llamada ram_perc
.
def ram_perc():
mem = psutil.virtual_memory()
mem_perc = mem.percent
print "RAM: ", mem_perc, "%"
psutil.virtual_memory
proporciona un conjunto de datos que contiene diferentes datos sobre la RAM en su computadora.
A continuación, puede agregar algunos datos sobre su red.
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
Como psutil.net_io_counters()
solo nos brinda información sobre los paquetes enviados y recibidos en bytes, fue necesario realizar algunas conversiones.
Para obtener información sobre el espacio de intercambio, agregue esta función.
def swap_perc():
swap = psutil.swap_memory()
swap_perc = swap.percent
Este es bastante sencillo.
La temperatura es un poco difícil de hacer, por lo que es posible que deba investigar un poco para averiguar qué funcionará con su hardware. Tendrá que mostrar el contenido de un determinado archivo.
El uso del disco es mucho más fácil que la temperatura. Todo lo que necesita hacer es pasar el disco que desea monitorear (es decir:) a /
través de una determinada función.
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"
La salida original de psutil.disk_usage
es esto,
>>>psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
pero también se puede simplemente recibir total
, used
, free
, o percent
.
El programa completado: (se combinaron las funciones mencionadas anteriormente)
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 línea temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
podría no funcionar con su configuración de hardware.
Ejecute este programa desde la línea de comandos. Pase los discos que desea monitorear como argumentos desde la línea de comandos.
$ 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
¡Espero que esto ayude! Comenta si tienes alguna pregunta.
https://github.com/calthecoder/sysmon-1.0.1