Вывод информации о использовании ресурсов системы

С помощью 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
  • В выводе получится наглядное отображение информации о загрузке процессора, использовании памяти и состоянии диска: