timers
Systemd timers по slug
Для каждого garden timer и service называются по slug:
<slug>-pull.timer
<slug>-pull.service
Для текущего production garden:
obsidian-duck-guide-pull.timer
obsidian-duck-guide-pull.service
Посмотреть статус
sudo systemctl status obsidian-duck-guide-pull.timer
sudo systemctl status obsidian-duck-guide-pull.service
Коротко:
systemctl list-timers | grep obsidian-duck-guide
Через gardenctl:
cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl timer-status obsidian-duck-guide
Логи service
journalctl -u obsidian-duck-guide-pull.service -n 100 --no-pager
Live logs:
journalctl -u obsidian-duck-guide-pull.service -f
Через gardenctl:
./gardenctl logs obsidian-duck-guide
Остановить auto-update
Остановить активный timer сейчас:
sudo systemctl stop obsidian-duck-guide-pull.timer
Отключить автозапуск после reboot:
sudo systemctl disable obsidian-duck-guide-pull.timer
Обычно делаем обе команды сразу:
sudo systemctl disable --now obsidian-duck-guide-pull.timer
Это значит: остановить сейчас и больше не включать автоматически.
Через gardenctl:
./gardenctl pause obsidian-duck-guide
Остановить уже запущенный rebuild
Timer может быть выключен, но service уже мог стартануть.
Остановить service:
sudo systemctl stop obsidian-duck-guide-pull.service
Проверить lock:
sudo lslocks | grep obsidian-duck-guide-deploy || true
Через gardenctl:
./gardenctl stop-service obsidian-duck-guide
Включить auto-update обратно
sudo systemctl enable --now obsidian-duck-guide-pull.timer
Проверить:
systemctl list-timers | grep obsidian-duck-guide
Через gardenctl:
./gardenctl resume obsidian-duck-guide
Запустить auto-update вручную один раз
Через systemd:
sudo systemctl start obsidian-duck-guide-pull.service
Через gardenctl для принудительной чистой пересборки:
cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl rebuild obsidian-duck-guide
Для всех gardens сразу
Посмотреть все garden timers:
systemctl list-timers '*-pull.timer'
Остановить все timers:
sudo systemctl stop '*-pull.timer'
Отключить автозапуск всех timers:
sudo systemctl disable '*-pull.timer'
Включить обратно все существующие timers:
sudo systemctl enable --now '*-pull.timer'
В production безопаснее работать по одному garden, чтобы случайно не выключить лишнее:
sudo systemctl disable --now obsidian-duck-guide-pull.timer
sudo systemctl stop obsidian-duck-guide-pull.service
Когда ручные правки закончены:
sudo systemctl enable --now obsidian-duck-guide-pull.timer
Что делает timer
Timer запускает service:
<slug>-pull.service
Service запускает:
/home/supervisor/leonid_projects/obsidians/<slug>/pull-and-rebuild.sh
Скрипт:
1. Берёт lock.
2. Делает git fetch origin main.
3. Сравнивает local и remote commit SHA.
4. Rebuild выполняется только при изменениях, отсутствии dist/index.html, FORCE_REBUILD=1 или HARD_CLEAN=1.
5. Запускает Docker build service.
6. Перезапускает Caddy только после успешной сборки.
Дальше: production rebuild.