Возможно, вы захотите попробовать sysmon. Хотя это и не так интересно, как Glances, он очень прост и прост в использовании.
Если вы хотите грязно и немного писать скрипты на python, вот некоторые основы системного мониторинга с Python, чтобы вы начали.
Вам понадобится внешний модуль, называемый psutil контролировать большинство вещей.
Примечание: эти примеры написаны на Python 2.7
sudo apt-get install pip
sudo pip install psutil
Теперь, когда у нас установлены модули, мы можем начать кодирование.
Сначала создайте файл с именем usage.py.
gedit ~/usage.py
Начните с импорта psutil
import psutil
Затем создайте функцию для мониторинга процент ваших ядер процессора работает.
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]), "%"
Давайте немного сломаем это?
Первая строка, cpu_num = psutil.cpu_percent(interval=1, percpu=True), находит процент, который ядра в вашем процессоре работает и присваивает его списку с именем cpu_perc.
Этот цикл прямо здесь
for i in range(len(cpu_num)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
- это цикл цикла, который выводит текущий процент от каждого
Давайте добавим использование ОЗУ.
Создайте функцию с именем ram_perc.
def ram_perc():
mem = psutil.virtual_memory()
mem_perc = mem.percent
print "RAM: ", mem_perc, "%"
psutil.virtual_memory дает набор данных содержащие различные факты об ОЗУ на вашем компьютере.
Затем вы можете добавить некоторые факты о своей сети.
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
Поскольку psutil.net_io_counters() предоставляет только информацию о отправляемых пакетах и полученных в байтах, необходимо было преобразование.
Чтобы получить некоторую информацию о пространстве подкачки, добавьте эту функцию.
def swap_perc():
swap = psutil.swap_memory()
swap_perc = swap.percent
Это довольно просто.
Температура очень сложная, поэтому вам, возможно, потребуется провести собственное исследование, чтобы выяснить, что будет работать с вашим оборудованием. Вам нужно будет отобразить содержимое определенного файла.
Использование диска намного проще, чем температура. Все, что вам нужно сделать, это передать диск, который вы хотите контролировать (например: /) через определенную функцию.
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"
Исходный вывод psutil.disk_usage - это
>>>psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
, но вы также можете просто получить total, used, free или percent.
Завершенная программа: (вышеупомянутые функции были объединены) [!d25 ]
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()
Строка temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C') может не работать с вашей аппаратной конфигурацией.
Запустить эту программу из командной строки. Передайте диски, которые вы хотите отслеживать в качестве аргументов из командной строки.
$ 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
Надеюсь, это поможет! Прокомментируйте, если у вас есть вопросы.