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


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
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
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
terminal.pngInstallation d'Apache 2.0 et PHP 5.1
Tutoriel d'installation d'Apache 2.0 et PHP 5.1 sous Debian Sarge à partir des paquets backports.org
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
log.pngInstallation d'un systeme de monitoring MRTG (Multi Router Traffic Grapher) sous debian
Ce tutoriel a pour but d'installer l'outil de monitoring MRTG. Cet outil permet de générer des graphiques en fonction de données SNMP, ou de scripts shell.
terminal.pngCréer un dépôt git privé sur un hébergement mutualisé ovh
Ce tutoriel vous présente comment installer un dépôt GIT sur votre hébergement mutualisé OVH
database.pngTutoriel de sauvegarde automatisées de bases de données MySQL, compression en tar.gz et envoi par FTP sous Linux Debian
Ce tutoriel vous présente comment automatiser la sauvegarde de base de données MySQL en compressant les sauvegardes et en les plaçant sur un FTP distant.
terminal.pngVider la mémoire cache d'un serveur Linux Debian
Ce tutoriel vous présente comment récupérer la mémoire cache alouée mais non utilisée par le système afin de la rendre disponible aux processus qui en ont besoin.