Назад | Перейти на главную страницу

Системный таймер, игнорирующий несколько часов

на машине 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