Je veux exécuter un script de sauvegarde 10 minutes après le démarrage de ma machine, mais seulement une fois par jour. Est-il possible de construire de tels scénarios avec systemd?
echo "obnam backup" | at "now + 10 minutes"
Je veux exécuter un script de sauvegarde 10 minutes après le démarrage de ma machine, mais seulement une fois par jour. Est-il possible de construire de tels scénarios avec systemd?
echo "obnam backup" | at "now + 10 minutes"
Réponses:
Voir /lib/systemd/system/systemd-tmpfiles-clean.timer
::
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
Cela exécute le .service
fichier correspondant 15 minutes après le démarrage, puis tous les jours pendant que le système est en marche. Si vous redémarrez plusieurs fois dans la même journée, vous pouvez simplement demander au script de sauvegarde de vérifier le temps de l'archive et d'ignorer cette exécution si elle date de moins d'un jour.
De plus, si vos sauvegardes vont être lourdes sur IO, il peut être utile de lire les directives IOScheduling * dans la page de manuel systemd.exec (5) .
Je ne pense pas qu'il soit possible de le faire entièrement dans systemd car il ne suit aucun état entre les redémarrages. Vous pouvez facilement planifier l'exécution de quelque chose 10 minutes après le démarrage à l'aide de systemd.timer
et de OnBootSec=
ou OnStartupSec=
.
Le script lui-même doit vérifier s'il a déjà été exécuté aujourd'hui ou non. Cela peut être facilement implémenté même en bash, par exemple:
#/bin/sh -x
FILE=/etc/lastrun
TODAY=`date +"%Y%m%d"`
LASTRUN=`cat $FILE`
[[ -z "$LASTRUN" ]] || [[ "$TODAY" -gt "$LASTRUN" ]] || exit
echo $TODAY > $FILE
RUNYOURSCRIPTHERE