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


16

Я хочу відобразити використання пам'яті, використання диска та завантаження процесора у такому форматі:

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

Як це зробити?


Дуже схоже на домашні завдання. Візьміть потрібні вам дані з / proc себе або з інших команд, а потім відформатуйте їх за допомогою awk, perl або просто bash.
— mikebabcock

Ласкаво просимо до Unix & Linux Stack Exchange! Будь ласка, завжди включайте вашу ОС. Рішення дуже часто залежать від операційної системи, яка використовується. Використовуєте Unix, Linux, BSD, OSX, щось інше? Яка версія?
— тердон

Дякую хлопцям за допомогу. Однак я отримав свою відповідь тут 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

Зауважте, що вищезазначений сценарій дає використання диска для /розділу. Ви не вказали, чого хотіли, тому я здогадуюсь, що це ви хочете.



@RahulPatil виглядає добре, чому б не опублікувати його?
— тердон

3
тому що це просто ваші скопійовані анси. : D
— Рахул Патіль

1
вільний рядок -m дає мені помилку, відсоток не був належним чином уникнути. ось так має бути:free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
— simon

1
@ user1735921 Будь ласка, задайте питання . Але спочатку google, як зберігати вихід команди в змінній, тобто тривіально. Потім поясніть, що ви хочете зберігати і що ви хочете перевірити у питанні.
— terdon

5

Перевірте зверху .

Читайте це, https://lwn.net/Articles/387202/

Побачити, введіть тут опис зображення

Ви можете бачити завантаження диска / пам'яті / процесора за програмами:

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

Наприклад, використання диска:

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

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


2

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

free - швидкий огляд

vmstat 1 показує статистику ефективності системи вводу-виводу

top динамічний

htop схожий на вершину


1
Киньте мого особистого фаворита, іостат.
— mikebabcock

0

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


0

Якщо ви використовуєте solaris, перевірте це: showcpucount

Це дасть вам уявлення про те, як рухатись із написанням коду.


Блог більше не існує.
— Джей Елстон

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

-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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.