У меня есть несколько сервисов (генераторы статических сайтов), которые я хочу регулярно запускать с одного и того же системного таймера. я нашел этот вопрос/ответ, который описывает именно то, что я хочу сделать, и описывает установку, посредством которой .цель
файл, который Хочет=
несколько служб запускаются соответствующим таймером. Звучит здорово, но я обнаружил, что когда я на самом деле настраиваю это, он всегда срабатывает однажды, затем отключается!
Я подготовил минимальный рабочий пример (это не запускает несколько служб, но демонстрирует ту же проблему):
тест-timer.timer
:
[Ед. изм]
Description=Таймер тестирования
[Таймер]
OnCalendar=*-*-* *:*:30
Unit=test-timer.target
[Установить]
WantedBy=timers.target
тест-timer.target
:
[Ед. изм]
Описание=Целевой блок
Хочет = test-timer.service
После=test-timer.service
[Установить]
WantedBy=timers.target
тест-timer.service
:
[Ед. изм]
Описание=Выполнить тест
[Оказание услуг]
ExecStart=/usr/bin/bash -c "date --rfc-3339='seconds' >> /tmp/test-timer-output"
[Установить]
Также=test-timer.target
Включите таймер:
$ sudo cp test-timer.* /etc/systemd/system/
$ sudo systemctl enable --now test-timer.timer
Создал символическую ссылку /etc/systemd/system/timers.target.wants/test-timer.timer — /etc/systemd/system/test-timer.timer.
Затем, когда я смотрю на вывод systemctl список-таймеры --все
, до первого запуска я получаю (игнорируя другие таймеры):
СЛЕДУЮЩИЙ СЛЕВА ПОСЛЕДНИЙ ПРОЙДЕННЫЙ БЛОК АКТИВИРУЕТСЯ
Пт 2021-10-08 10:38:30 EDT Осталось 21 с н/д н/д test-timer.timer test-timer.target
После первого запуска, СЛЕДУЮЩИЙ
и ОСТАВИЛ
были заменены на н/д
:
СЛЕДУЮЩИЙ СЛЕВА ПОСЛЕДНИЙ ПРОЙДЕННЫЙ БЛОК АКТИВИРУЕТСЯ
н/д н/д Пт 2021-10-08 10:38:32 EDT 1мин 5с назад test-timer.timer test-timer.target
Я также пытался добавить Постоянный = истина
к тест-timer.target
и явное включение тест-timer.target
, но ни один из них не работает. В любое время я делаю systemctl перезапустить test-timer.timer
, он перезапускается, но запускает только один запуск, а затем больше никогда не запускается.
Если я уберу слой косвенности, изменив Единица =
линия тест-timer.timer
к Unit=test-timer.service
, служба радостно запускается каждую минуту, как и ожидалось.
Я пропустил какой-то этап настройки или установки?