[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.
- http://manpages.ubuntu.com/manpages/xenial/man5/systemd.timer.5.html
- https://jlk.fjfi.cvut.cz/arch/manpages/man/systemd.timer.5
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.