системный таймер каждые 15 минут

Я пытаюсь сделать таймер systemd, который запускается каждые 15 минут. Прямо сейчас у меня есть:

  • timer-fifteen.timer :

     [Unit] Description=15min timer [Timer] OnBootSec=0min OnCalendar=*:*:0,15,30,45 Unit=timer-fifteen.target [Install] WantedBy=basic.target 
  • timer-fifteen.target :

     [Unit] Description=15min Timer Target StopWhenUnneeded=yes 

Это повторяется снова и снова, не останавливаясь. Нужно ли быть *:0,15,30,45:* вместо этого? Как я могу сделать эту работу?

Ваш синтаксис переводится каждые 15 секунд , если вы хотите каждые 15 минут , ИМО наиболее читаемым способом является:

 OnCalendar=*:0/15 

Ответ, наиболее похожий на то, что вы используете в своем вопросе:

 OnCalendar=*:0,15,30,45 

Больше информации:

Согласно systemd.time , настройка

 OnCalendar=*:0/15 

точно соответствует

 OnCalendar=*:0,15,30,45 

то есть. он активирует устройство точно в полный час, а также в четверть раза, полтора и два раза.

В зависимости от вашего обслуживания это может быть не то, что вы хотите, ни то, что вам нужно во всех случаях.

Таймер, который запускается каждые 15 минут – например, в 1:02, 1:17, 1:32, 1:47, 2:02, … – всегда в зависимости от времени последнего запуска – может быть выполнено с помощью systemd. установка таймера

 OnUnitActiveSec=15min 

Теперь вы также захотите, чтобы устройство запустилось через некоторое время после загрузки (если вы не хотите активировать устройство вручную или иметь зависимость, которая делает это), поэтому вам следует указать

 OnBootSec=10min OnUnitActiveSec=15min 

чтобы устройство запустилось через 10 минут после загрузки, а затем каждые 15 минут после этого первого раза.

Кроме того, существует настройка OnUnitInactiveSec которая начинает отсчет времени после остановки службы (или, в более общем случае, OnUnitInactiveSec устройства).