systemd timer a cada 15 minutos

25

Estou tentando fazer um temporizador 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 é repetido sem parar. Precisa ser *:0,15,30,45:* ? Como posso fazer isso funcionar?

    
por Lily Hahn 27.04.2014 / 19:57

2 respostas

32

Sua sintaxe é traduzida para cada 15 segundos , se você quiser a cada 15 minutos , o IMO mais legível é:

OnCalendar=*:0/15

Uma resposta mais parecida com o que você usa em sua pergunta é:

OnCalendar=*:0,15,30,45

Mais informações:

por 27.04.2014 / 20:07
10

De acordo com o systemd.time , a configuração

OnCalendar=*:0/15

se traduz exatamente para

OnCalendar=*:0,15,30,45

ie. ativa a unidade exatamente na hora completa, assim como no último trimestre, meio e meio para.

Dependendo do seu serviço, isso pode não ser o que você quer, nem o que você 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 em que foi última execução - pode ser realizada com a configuração systemd.timer

OnUnitActiveSec=15min

Agora, você também vai querer que a unidade inicie algum tempo após a inicialização (a menos que você queira ativar a unidade manualmente ou ter uma dependência que faça isso), então talvez você deva especificar

OnBootSec=10min
OnUnitActiveSec=15min

para que a unidade inicie 10 minutos após a inicialização e depois a cada 15 minutos depois dessa primeira vez.

Além disso, existe a configuração OnUnitInactiveSec , que começa a contar o tempo após o serviço ter parado (ou, mais geralmente, a unidade foi inativada).

    
por 06.07.2016 / 12:50

Tags