Вы можете попробовать 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
Надеюсь это поможет! Прокомментируйте, если у вас есть какие-либо вопросы.
https://github.com/calthecoder/sysmon-1.0.1