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?
Je ne comprends pas parfaitement vos besoins, veuillez clarifier. Je comprends que si vous redémarrez votre machine plusieurs fois par jour, le script ne devrait s'exécuter qu'après le premier redémarrage, n'est-ce pas? Si votre machine fonctionne pendant plus d'un jour, le script doit-il être exécuté plusieurs jours consécutifs?
Krzysztof Adamski
Exactement. Je ferai une sauvegarde tous les jours, quelle que soit la fréquence de redémarrage de mon PC.
Fu86
5
Si vous n'êtes pas accroché à systemd, c'est exactement à cela que sert anacron.
Gilles 'SO- arrête d'être méchant'
Je peux me tromper, mais il n'y a pas de moyen facile de configurer anacron pour exécuter le script seulement 10 minutes après la fin du démarrage.
Krzysztof Adamski
C'est vrai. C'est pourquoi j'utilise actuellement l'anacron et le bon vieux, avec un travail quotidien commeecho "obnam backup" | at "now + 10 minutes"
Cela exécute le .servicefichier 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.timeret 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:
Apparemment, ce problème sera résolu dans les prochaines versions. Au moins selon cet e - mail sur la liste de diffusion systemd-devel. Jusque-là, vous devez suivre la voie hackeuse proposée par Krzysztof.
echo "obnam backup" | at "now + 10 minutes"
Réponses:
Voir
/lib/systemd/system/systemd-tmpfiles-clean.timer
::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) .
la source
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 deOnBootSec=
ouOnStartupSec=
.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:
la source
Si vous n'êtes pas raccroché 10 minutes après le démarrage, vous pouvez:
OnCalendar=daily
le fait courir à minuit,Persisten=true
au démarrage s'il y avait au moins une course manquée.la source
Apparemment, ce problème sera résolu dans les prochaines versions. Au moins selon cet e - mail sur la liste de diffusion systemd-devel. Jusque-là, vous devez suivre la voie hackeuse proposée par Krzysztof.
la source