Możesz spróbować sysmon . Chociaż nie jest tak fantazyjny jak Spojrzenia, jest bardzo prosty i łatwy w użyciu.
Jeśli chcesz się zabrudzić i zrobić trochę skryptów w Pythonie, oto kilka podstawowych informacji na temat monitorowania systemu za pomocą Pythona, aby zacząć.
Będziesz potrzebował zewnętrznego modułu psutil
do monitorowania większości rzeczy. Najłatwiej jest użyć zewnętrznego instalatora modułów zamiast budowania ze źródła.
Uwaga: Te przykłady zostały napisane w Pythonie 2.7
sudo apt-get install pip
sudo pip install psutil
Teraz, gdy mamy zainstalowane moduły, możemy zacząć kodować.
Najpierw utwórz plik o nazwie usage.py
.
gedit ~/usage.py
Zacznij od importowania psutil
import psutil
Następnie utwórz funkcję monitorowania procentu pracy rdzeni procesora.
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]), "%"
Rozwalmy to trochę, prawda?
W pierwszym wierszu cpu_num = psutil.cpu_percent(interval=1, percpu=True)
znajduje się procent, w którym działają rdzenie procesora, i przypisuje go do listy o nazwie cpu_perc
.
Ta pętla tutaj
for i in range(len(cpu_num)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
to pętla for, która drukuje bieżący procent każdego z rdzeni procesora.
Dodajmy użycie pamięci RAM.
Utwórz funkcję o nazwie ram_perc
.
def ram_perc():
mem = psutil.virtual_memory()
mem_perc = mem.percent
print "RAM: ", mem_perc, "%"
psutil.virtual_memory
daje zestaw danych zawierający różne fakty dotyczące pamięci RAM w komputerze.
Następnie możesz dodać kilka faktów na temat swojej sieci.
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
Ponieważ psutil.net_io_counters()
daje nam tylko informacje o pakietach wysyłanych i odbieranych w bajtach, konieczna była pewna konwersja.
Aby uzyskać informacje o przestrzeni wymiany, dodaj tę funkcję.
def swap_perc():
swap = psutil.swap_memory()
swap_perc = swap.percent
Ten jest dość prosty.
Temperatura jest dość trudna do wykonania, więc może być konieczne przeprowadzenie własnych badań, aby dowiedzieć się, co będzie działać z twoim sprzętem. Będziesz musiał wyświetlić zawartość określonego pliku.
Użycie dysku jest znacznie łatwiejsze niż temperatura. Wszystko, co musisz zrobić, to przekazać dysk, który chcesz monitorować (tj .:), /
przez określoną funkcję.
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"
Oryginalny wynik psutil.disk_usage
jest taki,
>>>psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
ale można też po prostu odbierać total
, used
, free
, lub percent
.
Zrealizowany program: (powyższe funkcje zostały połączone)
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()
Linia temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
może nie działać z konfiguracją sprzętową.
Uruchom ten program z wiersza poleceń. Przekaż dyski, które chcesz monitorować, jako argumenty z wiersza poleceń.
$ 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
Mam nadzieję że to pomoże! Skomentuj, jeśli masz jakieś pytania.
https://github.com/calthecoder/sysmon-1.0.1