Я пытаюсь сделать системный таймер, который запускается каждые 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 минут , IMO наиболее читаемый способ:
Ответ, наиболее похожий на то, что вы используете в своем вопросе:
Больше информации:
источник
OnCalendar=0/8:00:00
правильно говорить "бегать каждые 8 часов"?OnCalendar=*:0/15
следует перевестиOnCalendar=*:0,15,30,45
точно (учитывая, что я правильно прочитал это в документации). Каждые 8 часов будут реализованы сOnUnitActiveSec=8hours
.systemd-analyze
может пригодиться, например, попытатьсяsystemd-analyze calendar *:0/15
.Согласно systemd.time , настройка
переводит именно на
то есть. он активирует юнит ровно в полный час, а также в четверть, полвторого и без четверти.
В зависимости от вашего обслуживания, это может быть не то, что вы хотите, ни то, что вам нужно во всех случаях.
Таймер, который запускается каждые 15 минут - например, в 1:02, 1:17, 1:32, 1:47, 2:02,… - всегда в зависимости от времени его последнего запуска - может быть выполнен с помощью systemd. настройка таймера
Теперь вы также захотите, чтобы модуль запускался через некоторое время после загрузки (если вы не хотите активировать модуль вручную или у вас есть зависимость, которая делает это), поэтому вам следует указать
чтобы устройство запускалось через 10 минут после загрузки, а затем каждые 15 минут после этого первого раза.
Кроме того, есть настройка,
OnUnitInactiveSec
которая начинает отсчет времени после остановки службы (или, в более общем случае, устройство деактивировалось).источник
OnUnitActiveSec
кажется, довольно сломан .