blinuxwiki - educational Blinux-minded

 

EduCrontab

Page history last edited by J 4 yrs ago

FichesEdu

 

EDU - Crontab

 

Crontab est un utilitaire incontournable qui permet de programmer des tâches régulières (/répétées) de façon simple, sur base d'un fichier texte qui, sous Debian se situe ici: /var/spool/cron/crontabs/

Notez donc que cela peut varier d'une distrib à une autre.

 

Il y a un fichier crontab par utilisateur, et c'est bien naturel:

ce que veut préprogrammer l'un n'est pas la même chose que ce que voudrait préprogrammer un autre utilisateur.

 

Amusez-vous par ex. à programmer crontab pour que Saytime vous dise l'heure à des moments précis de la journée, ou pour exécuter un updatedb une fois par jour, etc.

 

 

La structure du fichier crontab se compose d'une ligne par tâche:

  • Les cinq premiers champs déterminent la fréquence d'exécution d'une tâche,
  • les autres sont simplement la commande à exécuter.

 

Les cinq premiers champs sont:

minute (0-59)

heure (0-23)

jour du mois (1-31)

mois de l'année (1-12)

jour de la semaine (0-6, dimanche = 0)

 

 

On édite le fichier "perso" crontab de la façon suivante:

 

crontab -e 'enter'

i (pour entrer dans le mode "insert" de Vi/ViM)

vous pouvez maintenant entrer vos paramètres+la commande souhaitée

ESC (pour clôturer le mode "insert")

:wq 'enter' ( "w)rite" and "q)uit" ), pour sauver et quitter Vi/ViM

 

 

Voilà, vous retrouvez le prompt de la console!

 

Pour vérifier que ce que vous venez d'entrer a bien été pris en compte:

 

crontab -l 'enter'

 

Pour supprimer crontab:

 

crontab -r 'enter'

 

 

Exemples simples:

 

# Exécute 'commande' le 1er de chaque mois à 20h30

30 20 1 * * 'commande' >/dev/null 2>&1

 

par exemple:

30 20 1 * * /usr/bin/updatedb >/dev/null 2>&1

( si vous souhaitez être averti systématiquement par mail de l'exécution de la tâche, ne mettez pas >/dev/null 2>&1 )

 

# Exécute 'commande' tous les lundis à 23h30

30 23 * * 1 'commande' >/dev/null 2>&1

 

A noter que: "*" signifie 'pour toutes les occurences'.

 

On peut également spécifier des séries pour chaque champ, par exemple:

 

1-5 signifie de 1 à 5 compris

1,3,5 signifie 1, 3 et 5

2,6-12,15,20-23 signifie 2 et 6 à 12 et 15 et 20 à 23

 

 

Exemples:

 

# Exécute 'commande' chaque semaine, du lundi au vendredi, à 20h30

30 20 * * 1-5 'commande' >/dev/null 2>&1

 

# Exécute 'commande' tous les jours à 10h15 et 22h15

15 10,22 * * * 'commande' >/dev/null 2>&1

 

 

IMPORTANT:

 

  • ne jamais éditer crontab à la main, toujours utiliser crontab -e 'enter',
  • utiliser crontab -l 'enter' pour lister les tâches enregistrées, et
  • crontab -r 'enter' pour supprimer le fichier crontab actuel.
  • Par défaut, cron redirige son standard error vers le mail de l'utilisateur.

Cela peut devenir gènant! Donc, pour éviter une innondation de mails liés à crontab, mieux vaut placer:

'notre commande' >/dev/null 2>&1

en sachant que "2>&1" signifie rediriger le standard error (2) vers le standard output (&1).

  • Il faut toujours 5 entrées:

 

1 0 * * * 
| | | | +- jour de la semaine
| | | +--- mois de l'année
| | +----- jour du mois
| +------- heure du jour
+--------- minute

 

 

O. La Rosa - 02-06-2004 - Public - rev. 10-11-2005.

Comments (0)

You don't have permission to comment on this page.