Vous voudrez peut-être essayer SYSMON . Bien que pas aussi sophistiqué que Glances, il est très simple et facile à utiliser.
Si vous voulez vous salir et faire un peu de script en python, voici quelques bases de la surveillance système avec Python pour vous aider à démarrer.
Vous aurez besoin d'un module externe appelé psutil
pour surveiller la plupart des choses. Il est plus simple d'utiliser un programme d'installation de module externe au lieu de créer à partir du source.
Remarque: ces exemples sont écrits en Python 2.7.
sudo apt-get install pip
sudo pip install psutil
Maintenant que les modules sont installés, nous pouvons commencer à coder.
Tout d’abord, créez un fichier appelé usage.py
.
gedit ~/usage.py
Commencez par importer psutil
import psutil
Créez ensuite une fonction pour surveiller le pourcentage d'exécution de vos cœurs de processeur.
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]), "%"
Décomposons cela un peu, allons-nous?
La première ligne, cpu_num = psutil.cpu_percent(interval=1, percpu=True)
trouve le pourcentage d'exécution des cœurs de votre CPU et l'assigne à une liste appelée cpu_perc
.
Cette boucle ici
for i in range(len(cpu_num)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
est une boucle for qui affiche le pourcentage actuel de chacun de vos cœurs de processeur.
Ajoutons l'utilisation de la RAM.
Créez une fonction appelée ram_perc
.
def ram_perc():
mem = psutil.virtual_memory()
mem_perc = mem.percent
print "RAM: ", mem_perc, "%"
psutil.virtual_memory
donne un ensemble de données contenant différents faits sur la RAM de votre ordinateur.
Ensuite, vous pouvez ajouter quelques faits sur votre réseau.
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
Comme psutil.net_io_counters()
nous ne fournissons que des informations sur les paquets envoyés et reçus en octets, une certaine conversion était nécessaire.
Pour obtenir des informations sur l’espace de swap, ajoutez cette fonction.
def swap_perc():
swap = psutil.swap_memory()
swap_perc = swap.percent
Celui-ci est assez simple.
La température est un peu difficile à faire, vous devrez peut-être faire vos propres recherches pour déterminer ce qui fonctionnera avec votre matériel. Vous devrez afficher le contenu d'un certain fichier.
L'utilisation du disque est beaucoup plus facile que la température. Tout ce que vous avez à faire est de passer le disque que vous voulez surveiller (c.-à-d. /
:) À travers une certaine fonction.
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 sortie originale de psutil.disk_usage
est-ce,
>>>psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
mais vous pouvez aussi simplement recevoir total
, used
, free
ou percent
.
Le programme terminé: (les fonctions susmentionnées ont été combinées)
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 ligne temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
peut ne pas fonctionner avec votre configuration matérielle.
Exécutez ce programme à partir de la ligne de commande. Passez les disques que vous souhaitez surveiller en tant qu'arguments à partir de la ligne de commande.
$ 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
J'espère que cela t'aides! Commentez si vous avez des questions.
https://github.com/calthecoder/sysmon-1.0.1