Quiero ejecutar un script de respaldo 10 minutos después de iniciar mi máquina, pero solo una vez al día. ¿Es posible construir tales escenarios con systemd?
No entiendo completamente sus requisitos, por favor aclare. Entiendo que si reinicia su máquina varias veces en un día, el script solo debe ejecutarse después del primer reinicio, ¿es así? Si su máquina funciona durante más de 1 día, ¿el script debe ejecutarse en días consecutivos?
Krzysztof Adamski
Exactamente. Haré una copia de seguridad todos los días sin importar la frecuencia con que reinicie mi PC.
Fu86
55
Si no está colgado en systemd, esto es exactamente para lo que sirve anacron.
Gilles 'SO- deja de ser malvado'
Puedo estar equivocado, pero no hay una manera fácil de configurar anacron para que ejecute el script solo 10 minutos después de que se complete el arranque.
Krzysztof Adamski
Así es. Es por eso que actualmente estoy usando anacron y los buenos en, con un trabajo diario comoecho "obnam backup" | at "now + 10 minutes"
Adrien Clerc
Respuestas:
10
Ver /lib/systemd/system/systemd-tmpfiles-clean.timer:
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Esto ejecuta el .servicearchivo correspondiente 15 minutos después del arranque y luego todos los días mientras el sistema está activo. Si reinicia varias veces en el mismo día, puede hacer que el script de copia de seguridad verifique el tiempo del archivo y omita esa ejecución si tiene menos de un día de antigüedad.
Además, si sus copias de seguridad serán pesadas para IO, puede ser útil leer sobre las directivas IOScheduling * en la página de manual systemd.exec (5) .
No creo que sea posible hacer esto completamente en systemd, ya que no rastrea ningún estado entre reinicios. Puede programar fácilmente algo para que se ejecute 10 minutos después del inicio usando systemd.timery su OnBootSec=o OnStartupSec=.
El script en sí tiene que verificar si ya se ejecutó hoy o no. Esto se puede implementar fácilmente incluso en bash, por ejemplo:
Aparentemente, este problema se abordará en futuras versiones. Al menos según este correo electrónico en la lista de correo systemd-devel. Hasta que tengas que seguir el rudo camino que Krzysztof propuso.
echo "obnam backup" | at "now + 10 minutes"
Respuestas:
Ver
/lib/systemd/system/systemd-tmpfiles-clean.timer
:Esto ejecuta el
.service
archivo correspondiente 15 minutos después del arranque y luego todos los días mientras el sistema está activo. Si reinicia varias veces en el mismo día, puede hacer que el script de copia de seguridad verifique el tiempo del archivo y omita esa ejecución si tiene menos de un día de antigüedad.Además, si sus copias de seguridad serán pesadas para IO, puede ser útil leer sobre las directivas IOScheduling * en la página de manual systemd.exec (5) .
fuente
No creo que sea posible hacer esto completamente en systemd, ya que no rastrea ningún estado entre reinicios. Puede programar fácilmente algo para que se ejecute 10 minutos después del inicio usando
systemd.timer
y suOnBootSec=
oOnStartupSec=
.El script en sí tiene que verificar si ya se ejecutó hoy o no. Esto se puede implementar fácilmente incluso en bash, por ejemplo:
fuente
Si no está colgado 10 minutos después del arranque, puede:
OnCalendar=daily
hace que se ejecute cada medianoche,Persisten=true
en el arranque si hubo al menos una carrera perdida.fuente
Aparentemente, este problema se abordará en futuras versiones. Al menos según este correo electrónico en la lista de correo systemd-devel. Hasta que tengas que seguir el rudo camino que Krzysztof propuso.
fuente