From 1ec6f0c2d69d1758004bcec59f906a6463bd54e9 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Sat, 30 May 2026 23:05:04 +0600 Subject: [PATCH] =?UTF-8?q?[2026-05-30]=20sleep=20guard:=20rsync-active=20?= =?UTF-8?q?=D1=82=D1=80=D0=B8=D0=B3=D0=B3=D0=B5=D1=80=20+=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=BA=D0=B8=20htpc-system.md=20=D0=B8=20htpc.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- family/how-to/htpc-system.md | 26 +++++++++++++++++++++++++- family/how-to/htpc.md | 5 +++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/family/how-to/htpc-system.md b/family/how-to/htpc-system.md index 7b142f14..4b1743ab 100644 --- a/family/how-to/htpc-system.md +++ b/family/how-to/htpc-system.md @@ -124,11 +124,15 @@ Sleep управляется `htpc-sleep-guard` — Python-скрипт + system | Сервис | Статус | Роль | |---|---|---| -| `htpc-sleep-guard` | **active/enabled** | актуальный guard | +| `htpc-sleep-guard` | **active/enabled** | актуальный guard (SSH + торренты + rsync-файл) | | `transmission-sleep-guard` | disabled | старый, отключён (дублировал и держал ингибитор постоянно) | ### Логика guard +**Всегда (вне зависимости от времени):** +- Активная SSH сессия → держит inhibitor (HTPC не спит) +- Файл `/tmp/rsync-active` существует → держит inhibitor (rsync, бэкап и т.п.) + **Дневное окно (11:00–23:00):** - Торренты активны → держит systemd inhibitor (HTPC не спит) - Торренты не активны → inhibitor не держится, machine idle @@ -147,6 +151,26 @@ Sleep управляется `htpc-sleep-guard` — Python-скрипт + system - **409 retry**: при HTTP 409 от Transmission обновляет `X-Transmission-Session-Id` и повторяет запрос - **suspend trigger**: при переходе из "hold → release" вызывает `systemctl suspend` (без sudo, через polkit/logind) +Патч 2026-05-30 (rsync-active триггер): +- Добавлена функция `rsync_active()` — проверяет существование файла `/tmp/rsync-active` +- Guard держит inhibit пока файл существует (вне зависимости от времени) +- Исправлена обработка ошибок: `torrents_active()` и `ssh_active()` обёрнуты в отдельные `try/except` +- Использование: `touch /tmp/rsync-active` (включить), `rm /tmp/rsync-active` (выключить) + +### rsync-active триггер + +Любой процесс может держать HTPC в бодрствующем состоянии, создав файл `/tmp/rsync-active`: + +```bash +# Запретить сон (например, перед долгим rsync/bkp) +touch /tmp/rsync-active + +# Разрешить сон (после завершения) +rm /tmp/rsync-active +``` + +Guard проверяет файл каждые 60 секунд. Сервис: `systemctl --user status htpc-sleep-guard`. + ### Разбудить/усыпить вручную ```bash diff --git a/family/how-to/htpc.md b/family/how-to/htpc.md index df5464ec..2ae3e14a 100644 --- a/family/how-to/htpc.md +++ b/family/how-to/htpc.md @@ -44,6 +44,11 @@ print('Magic packet sent') ping -c 5 192.168.1.86 ``` +### Sleep management +HTPC использует `htpc-sleep-guard` — см. [[htpc-system#Автосон / Sleep management]]. +Чтобы не дать HTPC уснуть во время долгой операции: `touch /tmp/rsync-active` на HTPC. +По окончании: `rm /tmp/rsync-active`. + ### Если не просыпается WoL должен быть включён в BIOS/UEFI. Проверить настройки на HTPC (пока он живой): ```bash