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


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.