Skip to content

zcoder/autosuspend

Repository files navigation

Авто-сон по низкой нагрузке + Wake-on-LAN

Демон auto_suspend засыпает компьютер, если средняя нагрузка (LA 15) остаётся ниже порога в 1.5 более трёх часов и автоматически сбрасывает таймер, когда приходит WoL-кадр (UDP / 9). Проект содержит:

Файл Назначение
auto_suspend Python-демон, следит за нагрузкой и WoL
auto-suspend.service юнит systemd
install.sh установка/обновление (симлинки + перезапуск)
firewall.sh минимальная настройка WoL (ethtool + iptables)
wakeup.py CLI-утилита для отправки WoL
wakeup.sh shell-вариант (исп. пакет wakeonlan)

Требования

  • Ubuntu 22.04+ (или совместимая система c systemd)

  • Python ≥ 3.8, пакет psutil

    sudo apt install python3-pip
    sudo pip3 install psutil wakeonlan
  • В BIOS/UEFI включён Wake-on-LAN.


Установка

git clone https://…/auto-suspend.git
cd auto-suspend
sudo ./install.sh           # создаёт симлинки и запускает сервис

Настройка WoL-порта и firewall (один раз):

sudo ./firewall.sh          # разрешаем UDP/9 и включаем wol g на eno2

Измените интерфейс в firewall.sh, если он отличается (ip a).


Пользование

Действие Команда
Проверить журнал демона journalctl -u auto-suspend.service -f
Разбудить ПК (Python) python wakeup.py AA:BB:CC:DD:EE:FF -b 192.168.1.255
Разбудить ПК (shell) ./wakeup.sh — MAC прописывается в файл
Изменить пороги / таймаут правьте константы в auto_suspend, затем sudo ./install.sh

Демон пишет статус раз в 30 секунд: текущие LA и оставшееся до сна время.


Как это работает

  1. Нагрузка проверяется каждые 30 с; учитывается только LA 15.
  2. Как только 3 ч подряд LA 15 < 1.5systemctl suspend.
  3. Любой WoL-кадр (UDP / 9) сбрасывает счётчик «бездействия».
  4. Сервис перезапускается после resume автоматически.

Настройка под себя

  • LOAD_THRESHOLD — порог низкой нагрузки.
  • TIMEOUT_SEC — требуемая длительность простоя.
  • Можно слушать порт 7: в auto_suspend замените WOL_PORT = 9 на кортеж (7, 9) и измените обработку (см. комментарий к коду).

Обновление

git pull
sudo ./install.sh

Скрипт идемпотентен: перезапишет симлинки и перезапустит юнит.


Лицензия

MIT.

About

autosuspend host if low LA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published