Команда для отображения использования памяти, использования диска и загрузки процессора

16

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

Memory Usage: 33/512MB (6%)    
Disk usage: 4.2/20GB (23%) 
CPU Load: 0.01

Как мне это сделать?

Prem
источник
Очень похоже на домашнюю работу. Соберите нужные данные из самой / proc или других команд, затем отформатируйте их с помощью awk, perl или просто bash.
mikebabcock
Добро пожаловать в Unix и Linux Stack Exchange! Пожалуйста, всегда включайте вашу ОС. Решения очень часто зависят от используемой операционной системы. Используете ли вы Unix, Linux, BSD, OSX, что-то еще? Какая версия?
Terdon
Спасибо, ребята, за вашу помощь. Однако я получил ответ здесь stackoverflow.com/questions/33774260/…
Мохсин Инаят Хан

Ответы:

33

Попробуйте, это работает на моей системе Debian. Детали могут различаться в зависимости от реализации этих инструментов, которые использует ваша ОС:

#!/bin/sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}' 

Если вы сохраните вышеизложенное как скрипт и запустите его, вы получите (пример из моей системы):

$ ./foo.sh 
Memory Usage: 4986/7994MB (62.37%)
Disk Usage: 23/68GB (35%)
CPU Load: 0.78

Обратите внимание, что приведенный выше скрипт дает использование диска для /раздела. Вы не указали, что вы хотели, так что я думаю, это то, что вы после.

Тердон
источник
1
Я пробовал только с awk github.com/rahulinux/scripts/blob/master/sys_info.sh
Рахул Патил
@RahulPatil выглядит хорошо, почему бы вам не опубликовать это?
Тердон
3
потому что это просто ваши скопированные ответы. : D
Рахул Патил
1
строка free -m выдает ошибку, процент не был правильно экранирован. Вот как это должно быть:free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
Симон
1
@ user1735921 Пожалуйста, задайте вопрос . Но сначала, Google, как сохранить выходные данные команды в переменной, это тривиально. Затем объясните, что вы хотите сохранить и что вы хотите проверить в этом вопросе.
Terdon
5

Проверьте поверх .

Прочитайте это, https://lwn.net/Articles/387202/

Видеть, введите описание изображения здесь

Вы можете увидеть загрузку диска / памяти / процессора по приложениям:

введите описание изображения здесь

Например, использование диска:

введите описание изображения здесь

Поверх собранной статистики в каталоге /var/log/atop/в бинарном формате файлы за сутки. Вы можете прочитать справочную страницу, должен быть способ извлечь полезную информацию.

user2496
источник
2

Нет команды для отображения точно в вашем конкретном формате, но ниже приведены некоторые базовые значения, из которых можно построить скрипт, в качестве альтернативы также возможно чтение значений из / proc и / sys.

free - Краткая информация

vmstat 1 показывает производительность системы ввода / вывода статистики

top динамический

htop похоже на верх

X Тянь
источник
1
Киньте в мой личный фаворит, иостат.
mikebabcock
0

Я думаю, что вам нужна помощь nagios, поскольку все эти плагины / srcipts для nagios уже сделаны, и вы можете скачать и протестировать их без установки nagios.

Клерк
источник
0

Если вы используете солярис, проверьте это: showcpucount

Это даст вам представление о том, как писать код.

vikkp
источник
Блог больше не существует.
Джей Элстон
0

Вот мой код для получения загрузки процессора и оперативной памяти:

### 1. get total average CPU usage for the past minute
avg_cpu_use=$(uptime)
# a. split response
IFS=',' read -ra avg_cpu_use_arr <<< "$avg_cpu_use"
# b. find cpu usage
avg_cpu_use=""
for i in "${avg_cpu_use_arr[@]}"; do :
    if [[ $i == *"load average"* ]]; then
        avg_cpu_use=$i
        break       
    fi
done
# c. create response
avg_cpu_use=$(echo ${avg_cpu_use:16})   # Remove "  load average: "
if [[ -z "${avg_cpu_use// }" ]]; then
    avg_cpu_use="CPU: N/A%%"
    exit -1
else
    avg_cpu_use="CPU: ${avg_cpu_use}%%"
fi

### 2. get RAM usage
ram_use=$(free -m)
# a. split response by new lines
IFS=$'\n' read -rd '' -a ram_use_arr <<< "$ram_use"
# b. remove extra spaces
ram_use="${ram_use_arr[1]}"
ram_use=$(echo "$ram_use" | tr -s " ")
# c. split response by spaces
IFS=' ' read -ra ram_use_arr <<< "$ram_use"
# d. get variables
total_ram="${ram_use_arr[1]}"
ram_use="${ram_use_arr[2]}"
# e. create response
ram_use="RAM: ${ram_use}/${total_ram} MB"

echo $avg_cpu_use
echo $ram_use
xinthose
источник
-2

Вы должны иметь возможность отображать использование памяти, использование диска и загрузку процессора, используя:

(ps hax -o rss,user | awk '{a[$2]+=$1;}END{for(i in a)print i" "int(a[i]/1024+0.5);}' | sort -rnk2)
Абхиджит Петкар
источник