С помощью 2х скриптов можно наглядно увидеть загруженность CPU/Memory/Disk Space
- Для начала нужно создать файл sysinfo.py со следующим содержанием :
import psutil
import json
def get_system_stats():
stats = {
"cpu": psutil.cpu_percent(interval=1),
"memory": psutil.virtual_memory().percent,
"disk": psutil.disk_usage('/').percent
}
return json.dumps(stats)
if __name__ == "__main__":
print(get_system_stats())
Этот скрипт собирает данные о загрузке CPU/Memory/Disk Space, и выводит их в формате JSON.
- Далее нужно создать Bash скрипт sysinfo.sh для вызова Python скрипта и обработки данных со следующим содержанием:
#!/bin/bash
# Цвета с использованием ANSI кодов
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # Без цвета
# Запуск Python скрипта и сохранение результата в переменную
stats=$(python3 sysinfo.py)
# Проверка успешности выполнения Python-скрипта
if [ $? -ne 0 ]; then
printf "${RED}Ошибка выполнения Python-скрипта${NC}\n"
exit 1
fi
# Извлечение данных из JSON
cpu=$(echo $stats | jq -r '.cpu')
memory=$(echo $stats | jq -r '.memory')
disk=$(echo $stats | jq -r '.disk')
# Функция для создания полоски с цветом
create_bar() {
local value=$1
local max_length=50 # Максимальная длина полоски
local num_chars=$((value * max_length / 100)) # Пропорциональная длина полоски
local bar=$(printf "%0.s#" $(seq 1 $num_chars))
# Установка цвета в зависимости от значения
if [ $value -gt 80 ]; then
color=$RED
elif [ $value -gt 50 ]; then
color=$YELLOW
else
color=$GREEN
fi
# Возврат строки с цветным баром
printf "${color}${bar}${NC}\n"
}
# Вывод данных с графическим представлением и цветом
printf "%-15s %-10s %-s\n" "Resource" "Usage" "Graph"
printf "%-15s %-10s %-s\n" "--------" "-----" "-----"
printf "%-15s %-10s %-s\n" "CPU Usage" "$cpu%" "$(create_bar ${cpu%.*})"
printf "%-15s %-10s %-s\n" "Memory Usage" "$memory%" "$(create_bar ${memory%.*})"
printf "%-15s %-10s %-s\n" "Disk Usage" "$disk%" "$(create_bar ${disk%.*})"
- Далее делаем скрипт исполняемым:
chmod +x sysinfo.sh
- Запускаем скрипт:
sh sysinfo.sh
- В выводе получится наглядное отображение информации о загрузке процессора, использовании памяти и состоянии диска:
