Page précédente Page suivante Table des matières

8. Automatiser des tâches

8.1 Tâches périodiques: cron et la crontab

Pour éxécuter un programme périodiquement, il faut indiquer la marche à suivre à cron au moyen d'une crontab. Si le programme doit afficher quelque chose à l'écran, cron vous envoie le résultat par courrier électronique.

Pour éditer votre crontab, utilisez la commande crontab -e. La crontab se compose d'une série de lignes de texte. Chaque ligne décrit une tâche à effectuer et le moment auquel elle doit l'être.

Une ligne se compose de six champs, séparés par des blancs (espaces ou tabulations). Le sixième champ se compose de tout ce qui suit le cinquième blanc; il peut lui-même comporter des blancs. Les champs sont, dans l'ordre:

  1. minute: entre 0 et 59
  2. heure: entre 0 et 23
  3. jour du mois: entre 0 et 31
  4. mois: entre 0 et 12
  5. jour de la semaine: 0=dimanche, 1=lundi... 7=dimanche. Oui, 0 et 7 ont la même signification.
  6. instruction à éxécuter.
Les 5 premiers champs peuvent contenir une étoile, pour ignorer le champ, ou plusieurs valeurs séparées par des virgules.

Quelques exemples:

8.2 Un cron pour les machines personnelles: ucrond

Vixie cron, le cron par defaut de la Red Hat et de la plupart des autres distributions, présente un gros défaut: une tâche programmée n'est effectuée que si la machine est allumée au bon moment. Si ça ne pose guère de problemes pour les serveurs et les autres machines allumées en permanence, c'est beaucoup plus gênant dans le cas d'un PC personnel.

Pour résoudre ce problème, vous pouvez remplacer Vixie cron par ucrond. Vous pouvez en télécharger un package RPM par exemple à l'adresse http://www.chez.com/gomesdv/linux/RPMS/.

Une fois ucrond installé, il vous suffit de rajouter l'option -D avant une commande quelconque dans votre crontab pour que la tâche correspondante soit effectuée au prochain démarrage de la machine si elle n'a pas pu l'être au moment prévu.

Par exemple, la ligne de ma crontab pour poster la FAQ de mygale.linux devient:

20 20 1,16 * * -D $HOME/bin/nsotpp.sh $HOME/.nsotpp/mygale.linux.faq mygale.linux

8.3 Tâches ponctuelles: at

Pour programmer l'éxécution ponctuelle d'un programme, tapez at date. Différents formats sont possibles pour la date; reportez-vous à la page de manuel de at pour les connaître.

Ensuite, au prompt at>, entrez les instructions à éxécuter. Vous pouvez utiliser plusieurs lignes. Tapez Ctrl-d quand vous avez terminé.

Quelques exemples:

La commande atq permet de voir la liste des tâchez programmées. at -c numéro de la tâche affiche à l'écran une tâche programmée, et atrm numéro supprime une tâche non encore éxécutée.


Page précédente Page suivante Table des matières