Pour ceux qui chercheraient encore la solution, voici une solution. Elle n’est peut-être pas optimale, mais elle marche.
Rappel du besoin :
[quote]Je suis sur une debian wheezy, je ne suis pas root, et j’exécute certaines tâches via le crontab de mon utilisateur.
Or, ce système n’est pas allumé en permanence. Je souhaiterais donc que le système puisse rattraper son retard si jamais il a été éteint un certain temps.
Ce que je souhaite faire est de lancer une opération de sauvegarde chaque semaine. Et si le système n’est pas en fonction au moment où le cron aurait dû lancer l’opération, je souhaiterais que anacron prenne le relaie et lance l’opération au plus dès que le système est à nouveau opérationnel.[/quote]
Autrement dit, mon besoin est de pouvoir utiliser anacron en espace utilisateur.
La solution proposée pour Ubuntu sur un fil de discussion du site de askubuntu.com fonctionne également pour debian.
J’ai personnellement opté pour la solution 2 car c’est celle qui permet d’être utilisée sans avoir besoin de passer par le user root. Cette solution 2 consiste à recréer une arborescence anacron en espace utilisateur. Ca peut sembler impressionnant, dit comme ça, mais en vérité c’est tout simple : il suffit de créer quelques répertoires et un fichier anacrontab.
J’ajoute une simple précaution qui vous permettra d’éviter quelques jours de recherche et d’incompréhension : dans vos scripts lancés par anacron (ceux qui se trouveront dans [mono]/home/myuser/.anacron/daily[/mono], [mono]/home/myuser/.anacron/weekly[/mono] et [mono]/home/myuser/.anacron/monthly[/mono]), veillez à bien commencer vos scripts pas un shebang (chez moi : [mono]#!/bin/sh[/mono]) car sinon vos scripts ne s’exécuteront pas et vous aurez en retour une erreur plutôt absconse…
Enfin, sachez que si vous utilisez ce mécanisme basé sur anacron, vous n’avez in fine aucune certitude sur la fréquence d’exécution de vos scripts. Je vais illustrer mon propos : si vous demander à anacron de lancer votre script [mono]backup.sh[/mono] qui se trouve dans le répertoire [mono]/home/myuser/.anacron/monthly[/mono], vous pourriez croire que le script se lancera chaque mois. Mais que se passerait-il alors si votre machine restait éteinte plus d’un mois durant ? Faudrait-il lancer le script plusieurs fois au redémarrage ? Et bien non, votre script ne sera lancé qu’une seule fois étant donné que cela fait plus d’un mois qu’il n’a pas été lancé.
Autrement dit, anacron s’assure de laisser au moins 1 jour/semaine/mois entre chaque exécution de script.
Cela signifie que si votre script [mono]backup.sh[/mono] se trouve dans le répertoire [mono]/home/myuser/.anacron/monthly[/mono] et qu’il est lancé le 1er juillet, vous pouvez être sûr qu’il ne sera pas lancé avant le 1er août. En revanche, si votre machine est éteinte du 1er au 15 août, alors votre script sera lancé au redémarrage de la machine le 16 août. Mais le lancement suivant du script ne sera pas le 1er septembre, mais le 16 septembre (un mois après la précédente exécution du script).
La date d’exécution de votre script sera donc amenée à se décaler petit à petit, au fur et à mesure des arrêts de votre machine.
Ce n’est donc pour moi pas la solution idéale, mais c’est une solution qui fonctionne.
En mettant mon script dans le répertoire [mono]/home/myuser/.anacron/monthly[/mono], je me serais attendu à ce que le script soit lancé une fois par mois (quitte à ce qu’il soit lancé le 31 d’un mois, puis le 1er du mois suivant).
Et ne me demandez pas comment il gère les mois de 30 ou de 31 jours (voir celui de 28 ou 29 jours), je n’en sais rien ! Cependant, [mono]man anacrontab[/mono] indique :
Amusez-vous bien avec anacron. Et n’hésitez pas à compléter ma réponse avec toute information utile !