Показывать использование ЦП с использованием команды [duplicate]

16

Я хочу видеть использование процессора.
Я использовал эту команду:

top -bn1 | grep "Cpu(s)" | 
           sed "s/.*, *\([0-9.]*\)%* id.*//" | 
           awk '{print 100 - }'

Но он возвращает 100%.
Каков правильный путь?

    
задан Morteza Soltanabadiyan 18.04.2014 в 21:47
источник

3 ответа

10

Чтобы получить использование процессора, лучший способ - прочитать файл / proc / stat. Подробнее см. В man 5 proc .

Существует полезный сценарий, написанный Полом Колби, который я нашел здесь

#!/bin/bash
# by Paul Colby (http://colby.id.au), no rights reserved ;)

PREV_TOTAL=0
PREV_IDLE=0

while true; do

  CPU=('cat /proc/stat | grep '^cpu '') # Get the total CPU statistics.
  unset CPU[0]                          # Discard the "cpu" prefix.
  IDLE=${CPU[4]}                        # Get the idle CPU time.

  # Calculate the total CPU time.
  TOTAL=0

  for VALUE in "${CPU[@]:0:4}"; do
    let "TOTAL=$TOTAL+$VALUE"
  done

  # Calculate the CPU usage since we last checked.
  let "DIFF_IDLE=$IDLE-$PREV_IDLE"
  let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
  let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
  echo -en "\rCPU: $DIFF_USAGE%  \b\b"

  # Remember the total and idle CPU times for the next check.
  PREV_TOTAL="$TOTAL"
  PREV_IDLE="$IDLE"

  # Wait before checking again.
  sleep 1
done

сохраните его до cpu_usage , добавьте разрешение на выполнение chmod +x cpu_usage и запустите:

./cpu_usage

, чтобы остановить скрипт, нажмите Ctrl + c

    
ответ дан girardengo 19.04.2014 в 00:01
источник
32

Почему бы не использовать htop [просмотр интерактивного процесса]? Чтобы установить его, откройте окно терминала и введите:

sudo apt-get install htop

Также см. man htop для получения дополнительной информации и настройки.

    
ответ дан v2r 25.05.2014 в 16:26
5

Я нашел решение, которое прекрасно работает, вот оно:

top -bn2 | grep '%Cpu' | tail -1 | grep -P  '(....|...) id,' 

Я не уверен, но мне кажется, что первая итерация top с параметром -n возвращает некоторые фиктивные данные, всегда одинаковые во всех моих тестах.

Если я использую -n2 , тогда второй кадр всегда будет динамическим. Таким образом, последовательность:

  1. Получите 2 первых кадра сверху: top -bn2
  2. Затем из этих фреймов берутся только строки, содержащие «% Cpu»: grep '%Cpu'
  3. Тогда возьмите только последнее вхождение / строку: 'tail -1' '
  4. Затем получите значение простоя (имеет 4 или 5 символов, пробел, «id»): grep -P '(....|...) id,'

Надеюсь, что это поможет, Пол

    

ответ дан Paul 24.08.2016 в 16:21