¿Cómo ejecutar un script todos los sábados al arrancar con systemd?

¿Cómo ejecutar un script todos los sábados al arrancar con systemd?
[Unit] 
Description=run test service

[Timer]
OnCalendar=Sat *-*-* 00:00:01
Unit=test.service
Persistent=true

[Install]
WantedBy=timers.target

En el ejemplo anterior, todo funciona bien. Pero tengo que iniciar mi sistema operativo Linux antes de las 10 en punto de la mañana.

Mi meta es: Quiero iniciar mi Debian 10 en cualquier momento todos los sábados y luego ejecutar el script mientras inicio. Si reinicio mi máquina Linux dos o tres veces el sábado (el mismo día), no quiero volver a ejecutar el script, solo una vez. ¿Es posible hacer eso con systemd?

Mi sistema operativo Gnu-Linux esDebian GNU/Linux 10 (destructor)y systemctl --version essistemad 241 (241)

Respuesta1

El "sistema operativo Linux" es demasiado genéricopara poder diagnosticar su sistema específico. Ejecute los siguientes cuatro comandos e informe los resultados (incluidos los errores si el comando no está disponible). El informe indicará qué versión de "sistema operativo Linux" está instalada y qué versión de systemd se está ejecutando:

lsb_release -a
systemctl --version
/sbin/init --version
busctl --system get-property org.freedesktop.systemd1 \
                           /org/freedesktop/systemd1 \
                           org.freedesktop.systemd1.Manager \
                           Version

En una versión actual (a agosto de 2019) de systemd

Configure su temporizador en tiempo real para que se active en cualquier momento del sábado

OnCalendar=Sat *-*-* 00:00:01

Y quitar el temporizador monolítico.

OnBootSec=2

El efecto de

Persistent=true

es que el sistema intentará ejecutar el script una vez por semana después de las 00:00:01 cada sábado. El script se ejecutará sólo una vez cada sábado y normalmente será la primera vez que se inicie. Se ejecutará cualquier otro día de la semana si el sistema no estuvo encendido el sábado y se ejecutará a las 00:00:01 si el sistema se dejó el viernes durante la noche.

Persistente=

Toma un argumento booleano. Si es verdadero, la hora en que se activó por última vez la unidad de servicio se almacena en el disco. Cuando se activa el temporizador, la unidad de servicio se activa inmediatamente si se hubiera activado al menos una vez durante el tiempo en que el temporizador estuvo inactivo. Esto es útil para ponerse al día con las ejecuciones perdidas del servicio cuando la máquina estaba apagada. Tenga en cuenta que esta configuración solo tiene efecto en los temporizadores configurados con OnCalendar=. El valor predeterminado es falso.

información relacionada