Installer une tâche planifiée crontab sous Linux debian

01/10/2006 - 91784 consultations - 13 commentaires


Ce tutoriel vous présente comment installer une tâche planifiée crontab qui sera lancée automatiquement à un moment défini

Les 2 commandes principales pour gérer les crontab sont :
Lister les crontab :
crontab -l
00 01 * * * /root/sauvegarde.sh
Editer les crontab :
crontab -e
L'édition de crontab lance l'éditeur de texte par défaut (vi, vim, nano etc…)

Il est nécessaire de disposer d'un script exécutable qui sera la tache lancée par le crontab.
Ce script nécessite au minimum les droits d'exécution pour l'utilisateur qui lance la tache, il doit aussi avoir comme première ligne, le shell utilisé pour s'exécuter :
ls -ail /root/sauvegarde.sh
667821 -rwx------ 1 root root 443 2006-06-13 11:47 sauvegarde.sh
cat /root/sauvegarde.sh
#!/bin/sh
...
Chaque entrée de la table (chaque ligne) correspond à une tâche à exécuter et est notée de la façon suivante:
mm hh jj MMM JJJ tâche > log
Dans cette syntaxe:
=> mm représente les minutes (de 0 à 59)
=> hh représente l'heure (de 0 à 23)
=> jj représente le numéro du jour du mois (de 1 à 31)
=> MMM représente le numéro du mois (de 1 à 12) ou l'abréviation du nom du mois (jan, feb, mar, apr, ...)
=> JJJ représente l'abréviation du nom du jour ou le chiffre correspondant au jour de la semaine
(0 représente le dimanche, 1 représente le lundi, ...)
=> tâche représente la commande ou le script shell à exécuter
=> log représente le nom d'un fichier dans lequel stocker le journal des opérations.

Si la clause> log n'est pas spécifiée, cron enverra automatiquement un courriel de confirmation.
Pour éviter cela il suffit de spécifier > /dev/null

Pour chaque unité de temps (minute/heure/...) les notations sont possibles:
=> * : a chaque unité de temps
=> 2-5 : les unités de temps (2,3,4,5)
=> */3 : toutes les 3 unités de temps (0,3,6,...)
=> 5,8 : les unités de temps 5 et 8

Enfin il est possible de remplacer toutes les unités de temps par @reboot afin d'effectuer la commande au redémarrage de la machine :
@reboot /root/test.sh

Exemple de tâches cron :

Une tâche qui se lance tous les jours à 23H30 :
30 23 * * * /root/test.sh
Une tâche qui se lance toutes les heures, passées de 5 minutes :
5 * * * * /root/test.sh
Une tâche qui se lance tous les premiers du mois à 23h30 :
30 23 1 * * /root/test.sh
Une tâche qui se lance tous les quarts d'heure :
15,30,45,0 * * * * /root/test.sh
ou de cette manière :
*/15 * * * * /root/test.sh
Une tâche qui se lance tous les lundis à 22h28 :
28 22 * * 1 /root/test.sh
Une tâche qui se lance toutes les 2 minutes :
*/2 * * * * /root/test.sh
Une tâche qui se lance toutes les 2 heures:
0 */2 * * * /root/test.sh
Une tâche qui se lance tous les jours pairs du mois à 23h59 :
59 23 */2 * * /root/test.sh
etc …

Commentaires (13)

Abakkali - 17/05/2011 à 18h43
Très intéressant, et les exemples aide à mieu comprendre les params.

Merci pour l'aide

hervé - 20/09/2011 à 09h54
Merci, cela éclairci beaucoup de choses.

Une question cependant :
la crontab de l'utilisateur USER1 est-elle bien appliqué même si l'utilisateur n'est pas loggé sur la machine démarré?

Encore merci.

Nicolo - 18/10/2011 à 13h52
Oui les crontab d'un utilisateur comme par exemple www-data s'exécutent normalement

WaLFuN - 02/03/2012 à 04h30
Merci beaucoup pour ce tuto !

Keys - 11/10/2012 à 22h47
This could not possibly have been more helpful !

salima - 10/02/2013 à 03h16
Merci :)

Eye - 05/06/2013 à 15h53
Génial ! un grand merci !

Nicolo - 05/06/2013 à 16h12
De rien ;-)

Joris - 11/03/2014 à 16h16
Bonjour, bravo et merci pour ce tutoriel, une remarque : il y a deux petites erreurs sur ces lignes :

Une tâche qui se lance tous les quarts d'heure :
15,30,45,0 * * * /root/test.sh
ou de cette manière :
*/15 * * * /root/test.sh

Il manque une * :

Une tâche qui se lance tous les quarts d'heure :
15,30,45,0 * * * * /root/test.sh
ou de cette manière :
*/15 * * * * /root/test.sh

Nicolo - 11/03/2014 à 16h46
Merci !!
Corrigé ;-)

Mugnerot - 19/03/2015 à 21h33
bonjour,

si quelqu'un peux m'aider ? je n'arrive pas a executer mes crons alors que tout est bien parametrer dans crontab. avez vous une idée pourquoi mes script ne se lance pas automatiquement ?

Nicolo - 05/10/2015 à 10h41
Peut-être n'est il pas démarré ... avez-vous essayé de relancer le service ?
/etc/init.d/cron restart

Joris - 05/10/2015 à 11h09
Il faut bien vérifier que vous avez attribué les droits d'exécution sur le fichier ".sh".

Sinon, vous pouvez trouver les logs de l'exécution du CRON dans /var/log/syslog pour identifier le problème.

Commentez cet article

Nom (obligatoire)
E-mail (obligatoire)
Site Internet (facultatif)
code anti-spam

Me tenir inform� des nouveaux messages


encrypted.pngCorriger l'erreur There is no public key available for the following key IDs après apt-get update
Ce mini tutoriel vous explique comment corriger l'erreur There is no public key available for the following key IDs
mycomputer.pngMise à jour de votre distribution Linux Debian 5.0 Lenny à Linux Debian 6.0 Squeeze
Ce tutoriel vous indique comment mettre à jour votre distribution Linux Debian 5.0 Lenny à Linux Debian 6.0 Squeeze
encrypted.pngSauvegarde par ssh avec la commande scp avec clé publique - clé privée
Ce tutoriel présente comment effectuer une copie de fichier entre 2 serveurs en utilisant scp, en passant par des clé publique et clé privée afin de ne pas avoir à saisir de mot de passe
terminal.pngInstallation de subversion un dépôt de données SVN
Vous trouverez dans cet article l'intégralité de l'installation d'un entrepôt de sources subversion, celà permet de gérer les version en développement de sauvegarder toutes les modifications de vos sources de sites ou programmes
cdcopy.pngMettre à jour debian etch 4.0 vers debian lenny 5.0
Ce mini tutoriel vous explique comment mettre à jour votre distribution stable debian de etch 4.0 à lenny 5.0
date.pngSynchroniser l'heure de son serveur Debian Sarge sur Internet
Ce tutoriel vous présente comment garder son serveur Debian Sarge à l'heure en le synchronisant à un serveur de temps ntp avec ntp-simple
mycomputer.pngInstaller le serveur FTP Proftpd et stocker les utilisateurs dans une base de données MySQL sous Linux Debian Squeeze avec mots de passe encryptés en MD5
Ce tutoriel vous présente comment installer le serveur FTP Proftpd lié à MySQL sous Linux Debian Squeeze ainsi que la gestion de vos utilisateurs dans une table MySQL avec encryption des mots de passe en MD5
date.pngInstaller une tâche planifiée crontab sous Linux debian
Ce tutoriel vous présente comment installer une tâche planifiée crontab qui sera lancée automatiquement à un moment défini
mail_generic.pngProblème à l'installation d'Exim4 : Could not perform immediate configuration on 'exim4-daemon-light'. sous Linux Debian
Il peut arriver que vous rencontriez un problème lors de l'installation d'Exim4, une erreur du style : Could not perform immediate configuration on 'exim4-daemon-light'.