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.