12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- Техническое описание скрипта мониторинга батареи
- Этот Bash-скрипт предоставляет удобный интерфейс в терминале для мониторинга состояния батареи, температуры и охлаждения на системах Linux с использованием утилиты `acpi`. Он отображает информацию в реальном времени в структурированном виде с двойной рамкой, цветовым кодированием и полосами прогресса, обновляясь каждые 5 минут. Ниже приведено подробное описание его функциональности:
- 1. **Инициализация и настройка**:
- - Скрипт очищает терминал и скрывает курсор (функция `clear_box`).
- - Использует ANSI-коды для позиционирования, окрашивания и форматирования текста.
- - Установлена ловушка для восстановления курсора и очистки экрана при нажатии `Ctrl+C` (SIGINT).
- 2. **Основной макет отображения (`double_line_box`)**:
- - Создаёт рамку с двойными линиями (42 строки, 83 столбца) с использованием Unicode-символов (╔, ═, ║ и т.д.).
- - Цвет фона зависит от уровня заряда батареи:
- - 100%: Жёлтый (43)
- - 96–99%: Синий (44)
- - 92–95%: Фиолетовый (45)
- - 88–91%: Красный (41)
- - Ниже 88%: Жёлтый (43)
- - Горизонтальные разделители разбивают рамку на секции для разных типов данных.
- 3. **Секции информации**:
- - **Заголовок (`ifo_box`)**: Отображает "Linux OS acpi Состояние батареи" и инструкцию для выхода ("Нажмите 'ctrl+c' для выхода").
- - **Информация ACPI (`acpi_box`)**: Показывает версию `acpi`, если утилита установлена, или ошибку с инструкцией по установке, если нет.
- - **Обнаружение батареи (`bat_box`)**: Указывает, обнаружена ли батарея ("Detected" или "Undetected").
- - **Состояние батареи (`line_box`)**: Показывает состояние зарядки ("Charging", "Discharging", "Full" или "Unknown") с цветовым кодированием.
- - **Оставшееся время (`time_box`)**: Отображает примерное оставшееся время работы батареи (например, "02:30:00" или "N/A").
- - **Уровень заряда (`battery_progress_bar`)**: Рисует полосу прогресса из 50 символов (▓ для заполненной части, ░ для пустой) с процентом.
- - **Скорость разряда (`check_battery_rate`)**: Указывает, если информация о скорости недоступна.
- - **Состояние адаптера (`get_adapter_status`)**: Показывает состояние адаптера питания (например, "on-line" или "off-line").
- - **Температура (`get_thermal1_status`, `get_thermal2_status`)**: Отображает температуру для зон Thermal 0 и Thermal 1.
- - **Состояние охлаждения (`get_cooling`)**: Перечисляет состояния устройств охлаждения (например, "Cooling 0: intel_powerclamp 0 of 100") с префиксом "Battery" для первой строки, выровненные в столбец.
- - **Здоровье батареи (`get_battery_health`)**: Указывает проектную ёмкость, последнюю полную ёмкость, текущий процент ёмкости и износ.
- - **Полоса здоровья (`progress_bar`)**: Показывает здоровье батареи в виде полосы прогресса из 50 символов с процентом.
- 4. **Система предупреждений (`alert_box`)**:
- - Отображает рамку с предупреждением ("Компьютер скоро выключится!"), если уровень заряда ≤91%.
- - Цвет фона: Красный (41) для ≤91%, чёрный (40) для остальных случаев.
- 5. **Управление питанием**:
- - Проверяет уровень заряда каждые 5 минут (`sleep 300`).
- - Если уровень падает ниже порога (по умолчанию 70%), вызывает выключение системы через `systemctl poweroff`.
- 6. **Ключевые особенности**:
- - Динамическое цветовое кодирование для визуальной обратной связи (зелёный для активных состояний, красный для ошибок).
- - Настраиваемая начальная позиция для состояний охлаждения (по умолчанию: строка 19, столбец 5).
- - Полосы прогресса для уровня заряда и здоровья обеспечивают интуитивное представление.
- - Непрерывный цикл обеспечивает обновление данных в реальном времени.
- 7. **Зависимости**:
- - Требуется утилита `acpi` для данных о батарее, температуре и охлаждении.
- - Использует стандартные инструменты Linux: `awk`, `grep`, `tr`, `systemctl`.
- 8. **Использование**:
- - Запустите скрипт в терминале: `./имя_скрипта.sh`.
- - Выход с помощью `Ctrl+C` для восстановления состояния терминала.
- Этот скрипт предназначен для системных администраторов или пользователей, которым нужен детальный мониторинг батареи и температуры в Linux с акцентом на ясность и эстетику.
- asciinema: https://asciinema.org/a/711722
- codeberg: https://codeberg.org/Grannik/bAcpi
- github: https://github.com/Grannik/bAcpi
- gitlab: https://gitlab.com/grannik/bacpi
- sourceforge: https://sourceforge.net/projects/bacpi/
|