Демон 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 и оставшееся до сна время.
- Нагрузка проверяется каждые 30 с; учитывается только
LA 15
. - Как только 3 ч подряд
LA 15 < 1.5
→systemctl suspend
. - Любой WoL-кадр (UDP / 9) сбрасывает счётчик «бездействия».
- Сервис перезапускается после resume автоматически.
LOAD_THRESHOLD
— порог низкой нагрузки.TIMEOUT_SEC
— требуемая длительность простоя.- Можно слушать порт 7: в
auto_suspend
заменитеWOL_PORT = 9
на кортеж(7, 9)
и измените обработку (см. комментарий к коду).
git pull
sudo ./install.sh
Скрипт идемпотентен: перезапишет симлинки и перезапустит юнит.
MIT.