Voglio eseguire uno script di backup 10 minuti dopo l'avvio del mio computer, ma solo una volta al giorno. È possibile creare tali scenari con systemd?
echo "obnam backup" | at "now + 10 minutes"
Voglio eseguire uno script di backup 10 minuti dopo l'avvio del mio computer, ma solo una volta al giorno. È possibile creare tali scenari con systemd?
echo "obnam backup" | at "now + 10 minutes"
Risposte:
Vedi /lib/systemd/system/systemd-tmpfiles-clean.timer
::
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Questo esegue il .service
file corrispondente 15 minuti dopo l'avvio e quindi ogni giorno mentre il sistema è attivo. Se riavvii più volte nello stesso giorno, puoi semplicemente fare in modo che lo script di backup controlli il tempo di archiviazione dell'archivio e salti l'esecuzione se ha meno di un giorno.
Inoltre, se i tuoi backup saranno pesanti su IO, potrebbe essere utile leggere le direttive IOScheduling * nella manpage systemd.exec (5) .
Non penso che sia possibile farlo interamente in systemd in quanto non tiene traccia di nessuno stato tra i riavvii. È possibile pianificare facilmente l'esecuzione di qualcosa 10 minuti dopo l'avvio utilizzando systemd.timer
e relativo OnBootSec=
o OnStartupSec=
.
Lo script stesso deve verificare se è già stato eseguito oggi o meno. Questo può essere facilmente implementato anche in bash, ad esempio:
#/bin/sh -x
FILE=/etc/lastrun
TODAY=`date +"%Y%m%d"`
LASTRUN=`cat $FILE`
[[ -z "$LASTRUN" ]] || [[ "$TODAY" -gt "$LASTRUN" ]] || exit
echo $TODAY > $FILE
RUNYOURSCRIPTHERE