Показать загрузку процессора с помощью команды

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

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

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

Попробуй пройти бота-учителя. Он научит тебя Linux в виде игры: Курсы Linux и DevOPS Бесплатный урок

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

sudo apt-get install htop

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

enter image description hereenter image description here

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

Я нашел полезный сценарий, написанный Полом Колби здесь

#!/bin/bash# by Paul Colby (http://colby.id.au), no rights reserved ;)PREV_TOTAL=0PREV_IDLE=0while 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 1done

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

./cpu_usage

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

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

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

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

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

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

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

enter image description here

Попробуй пройти бота-учителя. Он научит тебя Linux в виде игры: Курсы Linux и DevOPS Бесплатный урок