Estoy tratando de hacer un temporizador systemd que se ejecute cada 15 minutos. En este momento tengo:
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
Esto se ejecuta una y otra vez sin parar. ¿Tiene que ser *:0,15,30,45:*
en su lugar? ¿Cómo puedo hacer que esto funcione?
Respuestas:
Su sintaxis se traduce en cada 15 segundos , si lo desea cada 15 minutos , la OMI es la forma más fácil de leer:
Una respuesta más similar a la que usa en su pregunta es:
Más información:
fuente
OnCalendar=0/8:00:00
es correcto decir "correr cada 8 horas"?OnCalendar=*:0/15
debería traducirseOnCalendar=*:0,15,30,45
exactamente (dado que lo leí correctamente en los documentos). Cada 8 horas se realizaría conOnUnitActiveSec=8hours
.systemd-analyze
puede ser útil, por ejemplo, intentesystemd-analyze calendar *:0/15
.De acuerdo con systemd.time , la configuración
se traduce exactamente a
es decir. activa la unidad exactamente a la hora completa, así como a las doce y cuarto y las cuatro menos cuarto.
Dependiendo de su servicio, esto puede no ser lo que desea, ni lo que necesita en todos los casos.
Un temporizador que se ejecuta cada 15 minutos , por ejemplo a las 1:02, 1:17, 1:32, 1:47, 2:02, ... siempre dependiendo de la última vez que se ejecutó, se puede lograr con el systemd. ajuste del temporizador
Ahora, también querrá que la unidad se inicie un tiempo después del arranque (a menos que desee activar la unidad manualmente o tener una dependencia que lo haga), por lo que tal vez debería especificar
para que la unidad se inicie 10 minutos después del arranque y luego cada 15 minutos después de esa primera vez.
Además, existe la configuración
OnUnitInactiveSec
que comienza a contar el tiempo después de que el servicio se ha detenido (o, más generalmente, la unidad se ha desactivado).fuente
OnUnitActiveSec
parece estar bastante roto .