на машине Arch linux, на которой размещен nginx, я хочу автоматически обновлять его сертификаты LetsEncrypt. Я написал для этого .service и .timer:
#letsencrypt-update.service
[Unit]
Description=LetsEncrypt Update Service
[Service]
Type=oneshot
ExecStart=/usr/bin/letsencrypt renew --quiet
#letsencrypt-update.timer
[Unit]
Description=LetsEncrypt Update Timer
[Timer]
OnCalendar=03,21:22
Persistent=true
[Install]
WantedBy=basic.target
За документация по certbot обновление LetsEncrypt следует запускать два раза в день, документация systemd.time должно быть возможно запустить службу в 03:22 и 21:22, разделив часы запятой, но когда я снова включаю таймер, следующее выполнение в systemctl list-timers
сегодня 03:22, а не 21:22 (здесь 10 утра).
Это почему? Должен ли systemd запускать таймер 03:22 перед выполнением таймера 21:22?
Я использую OnUnitActiveSec = 12h для обновления каждые 12 часов. Вот мой полный файл certbot-Renewal.timer:
[Unit]
Description=Timer for Certbot Renewal
[Timer]
OnBootSec=300
OnUnitActiveSec=12h
[Install]
WantedBy=multi-user.target
Исходная конфигурация Meilon вроде бы нормальная. Но я бы использовал это как конфигурацию таймера:
#letsencrypt-update.timer
[Unit]
Description=LetsEncrypt Update Timer
PartOf=%p.service
[Timer]
OnCalendar=03,21:22
RandomizedDelaySec=600
Persistent=true
[Install]
WantedBy=basic.target
PartOf =% p.service - соединить оба модуля вместе
RandomizedDelaySec = 600 - используйте случайную задержку запуска (например, 10 минут или больше) для применения "выберите случайную минуту в течение часа для задач продления"