Lancer anacron comme simple utilisateur
ven. 25 octobre 2013 Terminal
Sous Linux, il existe un utilitaire qui permet de déclencher des travaux de manière périodique. Il s'agit de cron. Cet utilitaire très pratique présente pour moi un énorme inconvient, il nécessite d'avoir un ordinateur constamment allumé. Heureusement, il existe un deuxième utilitaire anacron qui lui permet de lancer des travaux a posteriori si l'ordinateur était éteint au moment du déclenchement programmé. Et là, autre petit soucis, anacron ne se lance qu'en root (contrairement à cron qui se lance en mode utilisateur).
Heureusement, il est possible de créer un anacron non-root. Pour cela, il faut :
1) Créer un fichier anacrontab dans son répertoire personnel par exemple ~/user/etc/anacrontab, à l'image de celui présent dans /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# These replace cron's entries
@monthly 1 monprog env DISPLAY=:0 python /home/letchap/bin/monprog.py >> /home/letchap/tmp/monprog.log 2>&1
Les 4 champs à renseigner sont :
- la période : ici, une fois par mois
- le délai : le temps d'attente après le démarrage de l'ordinateur avant de lancer les travaux
- la référence du travail (important pour le timestamp)
- la commande shell à lancer
2) Donner les droits utilisateur sur le répertoire contenant le "compteur" d'anacron, c'est à dire la date de dernière utilisation.
Pour cela, nous commençons par créer un group anacron dans /etc/group et nous y ajoutons notre user
$ addgroup anacron
$ adduser user anacron
Puis nous modifions les droits sur le fichier /var/spool/anacron
$ chown root.anacron /var/spool/anacron
$ chmod g+w /var/spool/anacron
Comme nous sommes dans le groupe anacron, tout va bien.
3) Ne reste plus qu'à lancer notre anacron au démarrage de l'ordinateur
Cela se fait dans le fichier .profile de l'utlisateur en ajoutant la ligne suivante
/usr/sbin/anacron -t $HOME/etc/anacrontab
Pour mémoire, la date à laquelle se déclenche le job mensuel se définie dans le fichier /etc/crontab/.