Il peut être très commode de programmer des tâches sur son ordinateur à l’avance : travaux de maintenance, reboot, lancements de calculs sur un cluster en heures creuses etc. L’architecture Unix/Linux fournit pour cela trois programmes géniaux : cron, anacron et at.
Si j’ai déjà fait l’éloge de cron, qui permet de lancer des tâches à dates régulières (« toutes les deux heures », « tous les jeudis » etc.), je n’avais pas encore parlé de anacron ni de at.
Table des matières
anacron
anacron est basé sur cron (le préfixe a signifiant anachronistic), mais ces deux programmes sont en fait complémentaires. Si vous programmez une cron lors de extinction de votre machine, cette cron n’aura jamais lieu. L’idée de anacron est donc de dire « fais-moi cette tâche une fois par jour », sous-entendu « dès que tu peux ».
Contrairement à cron, anacron n’est pas un service (ou daemon), il ne fonctionne donc pas en arrière plan, mais seulement au démarrage de la machine et à intervalles réguliers (d’où l’utilité de cron pour anacron). anacron utilise des fichiers dateurs pour déterminer depuis combien de temps les tâches planifiées n’ont pas été exécutées (ces fichiers se trouvent dans /var/spool/anacron). Pour programmer une anacron, il faut éditer le fichier /etc/anacrontab, qui ressemble à ça :
# /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 1 5 cron.daily nice run-parts --report /etc/cron.daily 7 10 cron.weekly nice run-parts --report /etc/cron.weekly @monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly |
Les entrées sont donc composées de 4 colonnes, séparées par des tabulations :
- période souhaitée (en jours),
- délais entre les tâches (en minutes) pour éviter de lancer deux fois une même tâche au même moment,
- étiquette pour le nom du fichier dateur,
- tâche à exécuter.
Vous aurez remarqué que la fréquence maximale pour anacron est une fois par jour, au delà il faut utiliser cron (qui peut aller jusqu’à une fréquence de 1 par minute). On peut lancer manuellement anacron suivant différents modes :
Forcer l’exécution de toutes les tâches
anacron -f |
Mettre à jours les fichiers dateurs, sans exécuter les tâches
anacron -u |
Afficher les messages d’exécution et les enregistrer dans /var/syslog
anacron -d |
Bon à savoir : sur un ordinateur portable, si le système détecte que la machine fonctionne sur batterie, anacron ne lancera aucune tâche.
Commande « at »
La commande at, comme son nom l’indique, permet de demander à exécuter une commande à une date donnée. Contrairement à cron, at sert pour les tâches ponctuelles. Son utilisation est élémentaire. Exemple si on veut programmer une tâche à 20h le 31 décembre 2013 :
dorian@dorian:~$ at 20:00 12/31/13 warning: commands will be executed using /bin/sh at> |
Ensuite, le prompt nous donne la main pour indiquer la liste des commandes à exécuter. Une fois toutes les commandes rentrées, l’habituel
Il est possible de donner des dates relativement à la date du jour :
at 03:00 +2 days |
Pour exécuter une commande à 3h du matin dans deux jours.
at now +2 hour |
Pour exécuter une commande dans 2 heures.
Listez les commandes programmées
La commande atq vous donnera toutes les commandes programmées. La première colonne donne le numéro de chaque tâche à venir, la deuxième donne la date d’exécution et la dernière indique quel utilisateur a programmé cette tâche.
Supprimez un tâche programmée
Connaissant, le numéro d’une tâche, il suffit de lancer la commande atrm suivi de ce numéro pour la supprimer.
Programmer l’extinction de l’ordinateur
Pour ce faire, inutile de passer par la commande at, la commande shutdown faisant cela tout seul (en tant que super utilistateur).
Eteindre l’ordinateur à 23h30 :
shutdown -h 23:30 |
Redémarrer l’ordinateur maintenant :
shutdown -r now |
Annuler une procédure d’arrêt :
shutdown -c |
Pour aller plus loin
- Cron : vous pouvez lire mon article à ce propos, ou la documentation Ubuntu associée
- Anacron : un très bon billet à ce propos est disponible sur le blog Void And Any.
- at : un article assez complet sur la commande at est disponible sur le site math-linux.com.