Возможно, вы захотите попробовать 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]), "%"
- это цикл for, который выводит текущий процент каждого из ваших ядер процессора.
Давайте добавим использование ОЗУ.
Создайте функцию с именем 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
.
Завершенная программа: (вышеупомянутые функции были объединены)
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
Надеюсь, это поможет! Прокомментируйте, если у вас есть вопросы.
Ссылка