Estou tentando criar um timer systemd que é executado a cada 15 minutos. Agora eu tenho:
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
Isso é executado repetidamente sem parar. Precisa ser em *:0,15,30,45:*
vez disso? Como posso fazer isso funcionar?
Respostas:
Sua sintaxe se traduz a cada 15 segundos ; se você desejar a cada 15 minutos , o IMO da maneira mais legível é:
Uma resposta mais semelhante à que você usa na sua pergunta é:
Mais Informações:
fonte
OnCalendar=0/8:00:00
está correto ao dizer "executar a cada 8 horas"?OnCalendar=*:0/15
deve ser traduzidoOnCalendar=*:0,15,30,45
exatamente (dado que li corretamente nos documentos). A cada 8 horas seria realizado comOnUnitActiveSec=8hours
.systemd-analyze
pode ser útil, por exemplo, tentesystemd-analyze calendar *:0/15
.De acordo com o systemd.time , a configuração
traduz exatamente para
ie ativa a unidade exatamente a toda a hora, bem como às quinze e quinze, quinze e quinze para a.
Dependendo do seu serviço, pode não ser o que você deseja nem o que precisa em todos os casos.
Um cronômetro que é executado a cada 15 minutos - por exemplo, 1:02, 1:17, 1:32, 1:47, 2:02, ... - sempre dependendo da hora da última execução - pode ser realizado com o systemd. configuração do temporizador
Agora, você também desejará que a unidade inicie algum tempo após a inicialização (a menos que deseje ativar a unidade manualmente ou ter uma dependência que o faça), portanto, talvez você deva especificar
para iniciar a unidade 10 minutos após a inicialização e a cada 15 minutos após a primeira vez.
Além disso, existe a configuração
OnUnitInactiveSec
que começa a contar o tempo após a interrupção do serviço (ou, mais geralmente, a unidade foi desativada).fonte
OnUnitActiveSec
parece estar bem quebrado .