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.pngInstallation debian Sarge avec VMWare sous Ubuntu
Ce tutoriel vous présente comment installer debian Sarge dans une image virtuelle avec VMWare Player sous Ubuntu Linux
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
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
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
kcmdevices.pngForcer umount quand vous avez le message : device is busy sous Linux Debian
Ce mini tutoriel vous présente comment Démonter un point de montage quand celui ci ne veux pas être démonté
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
terminal.pngServeur ftp proftpd avec utilisateurs virtuels sous linux debian ubuntu
Ce tutoriel vous présente comment installer le serveur ftp proftpd à partir des paquets debian. Pour éviter de créer autant d'utilisateurs Linux que de compte FTP il est possible de créer des utilisateurs virtuels seulement disponibles pour le serveur FTP
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.
cal.pngCorriger l'erreur mysql Table './bacula/File' is marked as crashed and should be repaired avec myisamchk sous linux debian
Ce tutoriel vous présente comment réparer une table mysql crashée au format myisam avec l'utilitaire myisamchk