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

01/10/2006 - 91789 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


java.pngInstallation Tomcat et JDK de Sun
Tutoriel d'installation de Tomcat sous Debian avec la jdk de Sun à partir des packages Sun et Tomcat dernières version stable
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
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
database.pngInstallation MySQL 5 sous Debian Etch et Lenny
Tutoriel d'installation de MySQL 5 sous Debian Etch et Lenny à partir des paquets officiels
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
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
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
ark.pngVérification automatique des mises à jour Linux Debian avec cron-apt
Ce tutoriel vous présente comment savoir simplement quand votre serveur Linux Debian nécessite l'installation de nouvelles mises à jour avec cron-apt.
mail_generic.pngSSMTP Serveur smtp simple pour envoyer ses mails de son serveur local par le smtp de son FAI sur debian lenny
Ce petit tutoriel vous présente comment configurer rapidement un smtp sur son serveur debian lenny afin de pouvoir envoyer des mail par l'intermédiaire du smtp de son fournisseur d'accès internet