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


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

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

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

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

Оффлайн r-wb

  • Участник
  • *
  • Сообщений: 240
    • Просмотр профиля
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

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • 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

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • 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

  • Старожил
  • *
  • Сообщений: 14927
  • Я не слышу.
    • Просмотр профиля
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
~.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

  • Старожил
  • *
  • Сообщений: 1971
    • Просмотр профиля
Re: загрузка CPU (получить значение % и всё)
« Ответ #12 : 22 Сентябрь 2016, 03:04:21 »
Вот написал скрипт на одном awk:
cpu_load.awk
Код: awk
  1. #!/usr/bin/awk -f
  2.  
  3. function get_cpu_times() {
  4.         while((getline l < "/proc/stat") > 0) {
  5.                 if(l~/^cpu /) {
  6.                         close("/proc/stat")
  7.                         $0 = l
  8.                         idle = $5
  9.                         total = $2+$3+$4+$5+$6+$7+$8+$9+$10+$11
  10.                         diff_idle = idle-prev_idle
  11.                         diff_total = total-prev_total
  12.                         return idle total diff_idle diff_total
  13.                         }
  14.                 }
  15. }
  16.  
  17. function calc_cpu_load_prcnt() {
  18.         get_cpu_times()
  19.         prev_idle = idle
  20.         prev_total = total
  21.         system("sleep 1")
  22.         get_cpu_times()
  23.         load = (1000*(diff_total-diff_idle)/diff_total+5)/10
  24.         return load
  25. }
  26.  
  27. BEGIN{
  28.         if(ARGC==1){calc_cpu_load_prcnt();printf "%.0f\n",load; exit}
  29.         if(ARGC==2 && ARGV[1]=="m"){for(;;){calc_cpu_load_prcnt();printf "\r%.1f %%   ",load}}
  30. }
  31.  
  32.  
Показывает у меня правильно, работает быстро.
Вызванный без параметра, скрипт возвращает целое число значения загрузки 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.072 секунд. Запросов: 24.