Necesito escribir una unidad de temporizador para una máquina que se apaga con frecuencia (por ejemplo, la configuración de escritorio clásica). Esta unidad de temporizador debe activarse regularmente pero no con mucha frecuencia (por ejemplo, semanalmente, mensualmente).
Encontré algunos enfoques, pero no todos encajan realmente:
De acuerdo con las páginas del manual sólo el
OnBootSec
y lasOnStartupSec
directivas se activará si el punto de tiempo configurado está en el pasado. También encontré algunos ejemplos usando una combinación de estosOnActiveSec
para definir un evento regular. El problema es: cada vez que se inicia la máquina, el temporizador activará la unidad configurada. Si tiene un temporizador que debe ejecutarse UNA VEZ por semana / mes, es demasiado frecuente. Por ejemplo: no quiero hacer rotar mis registros tres veces al día ...Soluciones con la
OnCalendar
directiva. Si la máquina se apaga en el punto configurado en el tiempo (principalmente medianoche porque si omite la hora en la especificación de tiempo, el valor predeterminado es 00:00:00) el temporizador no se activará después del próximo arranque. Al menos así es como lo obtuve. Está bien ?
Entonces, aquí viene la pregunta:
¿el temporizador con eventos de calendario se activa inmediatamente después del próximo inicio si la hora configurada es pasada?
Si no es así: ¿hay una solución alternativa para obtener ese comportamiento?
Respuestas:
Esta característica ya se implementó en systemd (ver> = 212) usando la
Persistent=
directiva, por lo que solo necesita insertarlaPersistent=true
en el archivo de la unidad mientras usa laOnCalendar=
directiva para establecer la fecha / hora para ejecutar el trabajo.fuente
OnBootSec
yOnActiveSec
.Persistent
es ejecutar una vez en el arranque si se perdió al menos una carrera debido a que no funciona?De acuerdo con este correo electrónico en la lista de correo systemd-devel, el comportamiento deseado está en la hoja de ruta y se agregará en el futuro.
fuente