Exécuter le script une fois par jour avec systemd

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 build de tels scénarios avec systemd?

Voir: /lib/systemd/system/systemd-tmpfiles-clean.timer :

 [Timer] OnBootSec=15min OnUnitActiveSec=1d 

Cela exécute le file .service correspondant 15 minutes après le démarrage, puis tous les jours pendant que le système est en place. Si vous redémarrez plusieurs fois dans la même journée, vous pouvez simplement faire en sorte que le script de sauvegarde vérifie le mtime de l'archive et ignorez cette exécution s'il a less d'un jour.

De même, si vos sauvegardes sont lourdes sur les inputs / sorties, 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 quelque chose à exécuter 10 minutes après le démarrage en utilisant systemd.timer et son 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 dans 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 

Apparemment, ce problème sera traité dans les prochaines versions. Au less selon cet email sur la list de diffusion systemd-devel. Jusqu'à ce que vous devez aller à la façon hackish Krzysztof proposé.