Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: загрузка CPU (получить значение % и всё)  (Прочитано 6782 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mouserok

  • Автор темы
  • Активист
  • *
  • Сообщений: 326
    • Просмотр профиля
Добрый день!
нужно мониторить загрузку CPU как получить число загрузки в процентах

к примеру CPU загружен на 54%
./get_cpu_usage.sh
54
Пользователь решил продолжить мысль 09 Октября 2012, 16:33:34:
сам отвечу
top -b -n 1  | awk -F'[:,]' '/^Cpu/{sub("\\..*","",$2); print $2}'
« Последнее редактирование: 09 Октября 2012, 16:33:34 от mouserok »

Оффлайн di-erz

  • Активист
  • *
  • Сообщений: 364
  • Не ангел, крыльев нету...
    • Просмотр профиля
    • Sanaviron
Re: загрузка CPU (получить значение % и всё)
« Ответ #1 : 09 Октября 2012, 23:05:27 »
uptime легче
Большинство проблем от невнимательности, остальные от лени..
[Acer Aspire 5738G, ATI Mobility Radeon HD 4570, Ubuntu 12.04 LTS]
[HP ENVY m6-1106er AMD A10-4600M, Radeon HD 7660G/7670M, Ubuntu 14.04.2]

Оффлайн mouserok

  • Автор темы
  • Активист
  • *
  • Сообщений: 326
    • Просмотр профиля
Re: загрузка CPU (получить значение % и всё)
« Ответ #2 : 10 Октября 2012, 18:20:51 »
top -b -n 1  | awk -F'[:,]' '/^Cpu/{sub("\\..*","",$2); print $2}'
как-то значение не совсем адекватное возвращается
может кто лучше решение предложит ?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: загрузка CPU (получить значение % и всё)
« Ответ #3 : 10 Октября 2012, 21:40:20 »
mouserok,
Код: (bash) [Выделить]
bc <<< "100-$(top -bn2 -d1 | awk -F':|%|,' '/^Cpu/{IDLE=$8}END{print IDLE}')"Оптимизация приветствуется.

Оффлайн r-wb

  • Участник
  • *
  • Сообщений: 241
    • Просмотр профиля
Re: загрузка CPU (получить значение % и всё)
« Ответ #4 : 11 Октября 2012, 07:22:11 »
GKrellm System Monitor позволяет контролировать не только загрузку ЦПУ в % по всем ядрам, но и запущенные процессы, интернет и пр. Из встроенного- системный монитор. Сходимость показаний этих 2 средств- хорошая.
Samsung 17"NP305E7A-SO1RU AMDA8-3520M APU with Radeon(tm) HD Graphics×4;ОЗУ8,0;Mobility Radeon HD 6620G/Radeon HD 6470M. AMD 64.Ubuntu 16.04, Win 7;HUAWEI MediaPad T3 7 3G Android 7 4100мАч, металл.

Оффлайн mouserok

  • Автор темы
  • Активист
  • *
  • Сообщений: 326
    • Просмотр профиля
Re: загрузка CPU (получить значение % и всё)
« Ответ #5 : 11 Октября 2012, 09:57:47 »
вот еще нашел
eval $(awk '/^cpu /{print "previdle=" $5 "; prevtotal=" $2+$3+$4+$5 }' /proc/stat); sleep 0.4; eval $(awk '/^cpu /{print "idle=" $5 "; total=" $2+$3+$4+$5 }' /proc/stat); intervaltotal=$((total-${prevtotal:-0})); echo "$((100*( (intervaltotal) - ($idle-${previdle:-0}) ) / (intervaltotal) ))"
Пользователь решил продолжить мысль 11 Октября 2012, 12:33:44:
как-то значение все равно отличается от top
у кого есть правильный возврат cpu usage?
« Последнее редактирование: 11 Октября 2012, 12:33:44 от mouserok »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net

Оффлайн mouserok

  • Автор темы
  • Активист
  • *
  • Сообщений: 326
    • Просмотр профиля
Re: загрузка CPU (получить значение % и всё)
« Ответ #7 : 11 Октября 2012, 16:07:16 »
у кого есть правильный возврат cpu usage?
https://forum.ubuntu.ru/index.php?topic=203725.msg1543524#msg1543524
как это по ssh пустить ??
/usr/bin/ssh user@ip "bc <<< "100-$(top -bn6 -d1 | awk -F':|%|,' '/^Cpu/{IDLE=$8}END{print IDLE}')""выдает
File 77.9 is unavailable.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: загрузка CPU (получить значение % и всё)
« Ответ #8 : 11 Октября 2012, 18:48:30 »
# ssh root@srv08 'bc <<< 100-$(top -bn6 -d1 | awk -F":|%|," "/^Cpu/{IDLE=\$8}END{print IDLE}")'
49.7

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: загрузка CPU (получить значение % и всё)
« Ответ #9 : 11 Октября 2012, 19:40:21 »
ssh root@.6.184 "bc <<< \"100-$(top -bn6 -d1 | awk -F':|%|,' '/^Cpu/{IDLE=$8}END{print IDLE}')\""
35.2
Wars ~.o

Оффлайн mouserok

  • Автор темы
  • Активист
  • *
  • Сообщений: 326
    • Просмотр профиля
Re: загрузка CPU (получить значение % и всё)
« Ответ #10 : 12 Октября 2012, 09:21:50 »
# ssh root@srv08 'bc <<< 100-$(top -bn6 -d1 | awk -F":|%|," "/^Cpu/{IDLE=\$8}END{print IDLE}")'
49.7
тут спасибо - правду показывает

ssh root@.6.184 "bc <<< \"100-$(top -bn6 -d1 | awk -F':|%|,' '/^Cpu/{IDLE=$8}END{print IDLE}')\""
35.2
а вот тут врет

Оффлайн zagruzkaaa

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: загрузка CPU (получить значение % и всё)
« Ответ #11 : 11 Апреля 2015, 00:39:30 »
что-то не работает команда, какую использовать сейчас?

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: загрузка CPU (получить значение % и всё)
« Ответ #12 : 22 Сентября 2016, 03:04:21 »
Вот написал скрипт на одном awk:
cpu_load.awk
Код: (awk) [Выделить]
#!/usr/bin/awk -f

function get_cpu_times() {
while((getline l < "/proc/stat") > 0) {
if(l~/^cpu /) {
close("/proc/stat")
$0 = l
idle = $5
total = $2+$3+$4+$5+$6+$7+$8+$9+$10+$11
diff_idle = idle-prev_idle
diff_total = total-prev_total
return idle total diff_idle diff_total
}
}
}

function calc_cpu_load_prcnt() {
get_cpu_times()
prev_idle = idle
prev_total = total
system("sleep 1")
get_cpu_times()
load = (1000*(diff_total-diff_idle)/diff_total+5)/10
return load
}

BEGIN{
if(ARGC==1){calc_cpu_load_prcnt();printf "%.0f\n",load; exit}
if(ARGC==2 && ARGV[1]=="m"){for(;;){calc_cpu_load_prcnt();printf "\r%.1f %%   ",load}}
}

Показывает у меня правильно, работает быстро.
Вызванный без параметра, скрипт возвращает целое число значения загрузки CPU в процентах.
С параметром "m" - монитор загрузки CPU с интервалом 1сек.

Запуск:
./cpu_load.awkили
awk -f cpu_load.awk
Добавить права на исполнение:
chmod +x cpu_load.awk
Получение значения загрузки CPU в переменную sh/bash:
load=$(awk -f cpu_load.awk)или
load=$(awk -f "/путь/до/скрипта/cpu_load.awk")

 

Страница сгенерирована за 0.03 секунд. Запросов: 25.