Есть ли какая-нибудь команда для вывода только использования процессора и памяти в Linux? - PullRequest
0 голосов
/ 09 января 2019

Я создаю базу данных (для исследовательских целей), которая получает данные об использовании процессора и MEM моего компьютера (%).

Поэтому мне нужно вывести (в файл .txt) использование ЦП и памяти (ОЗУ) (%) всей моей системы (Linux / Ubuntu 18.04)

Проблема в том, что я получаю информацию о процессоре и MEM, разделенную процессами, используя следующую команду:

>> while true; do (echo "%CPU %MEM $(date)" && ps -e -o pcpu,pmem --sort=pcpu | cut -d" " -f1-5 | tail) > test.txt; sleep 5; done

Что дает следующий вывод:

%CPU %MEM wed jan  9 11:26:39 -03 2019
 0.0  0.0
 0.1  0.2
 0.1  1.4
 0.1  1.6
 0.4  1.4
 0.6  2.8
 1.0  2.4
 1.5  6.1
 4.1  0.6
12.4  8.2

Я знаю, что эта команда сортирует по pcpu (я полагаю, это наиболее "используемые процессы"), но я нашел только такой способ сбора этих данных.

Дело в том:

Есть ли команда для сбора данных об использовании процессора и MEM (в%) без всех этих строк? Мне нужен только процент (числа) для использования в базе данных только с результирующим использованием системы, что-то вроде этого:

%CPU %MEM wed jan  9 11:26:39 -03 2019
 53.0 32.2

Ответы [ 2 ]

0 голосов
/ 09 января 2019

не очень элегантно или эффективно, но вот альтернативное решение с использованием Python и библиотеки psutil ...

короткая программа на Python для печати cpu% и mem% будет выглядеть так:

import psutil

cpu = psutil.cpu_percent()
mem = psutil.virtual_memory().percent
print("{}% {}%".format(cpu, mem))

, который можно записать как однострочник оболочки следующим образом:

$ python3 -c 'import psutil; cpu=psutil.cpu_percent(); mem=psutil.virtual_memory().percent; print("{}% {}%".format(cpu, mem))'

так что вы можете запустить его в своей оболочке в виде цикла:

$ while true; do python3 -c 'import psutil; cpu=psutil.cpu_percent(); mem=psutil.virtual_memory().percent; print("{}% {}%".format(cpu, mem))'; sleep 5; done

(примечание: psutil может быть установлен в вашей системе Ubuntu с помощью: $ sudo apt install python3-psutil)

0 голосов
/ 09 января 2019

вы можете заменить команду tail в вашем скрипте на:

awk 'BEGIN {cpu=0;mem=0} {cpu+=$1; mem+=$2} END {print cpu,mem}'

и ваша строка станет:

while true; do (echo "%CPU %MEM $(date)" && ps -e -o pcpu,pmem --sort=pcpu | cut -d" " -f1-5 | awk 'BEGIN {cpu=0;mem=0} {cpu+=$1; mem+=$2} END {print cpu,mem}') > test.txt; sleep 5; done
...