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

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


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
mycomputer.pngInstaller le serveur FTP Proftpd avec le module MySQL et stocker les utilisateurs dans une base de données MySQL sous Linux Debian Lenny
Ce tutoriel vous présente comment installer le serveur FTP Proftpd lié à MySQL sous Linux Debian Lenny ainsi que la gestion de vos utilisateurs dans une table MySQL
ark.pngInstallation d'un système de sauvegarde avec rsync
Ce tutoriel vous présente l'installation d'un système de sauvegarde pour par exemple un site web à l'aide de l'outils rsync
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
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
mycomputer.pngOutils intéressants sous Linux
Voici quelques outils intéressants pour vous faciliter la vie sous Linux : nmap, nslookup
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é
kcmdevices.pngInstaller et formater un disque dur externe usb sous Linux Debian Etch
Ce tutoriel vous présente comment installer votre dique usb sous Linux debian de l'installation en passant par le formatage jusqu'au montage dans votre système de fichier
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