Crontab

crontab-schedule

Structure

La structure de crontab est assez simple à comprendre.

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
30 3 * * * /bin/sh /home/script1.sh
0 4 * * * /bin/sh /home/script2.sh
30 4 * * * /bin/sh /home/script3.sh Argument1 Argument2
#0 2 * * * /bin/sh /data/dumb_db.sh
#30 2 * * * /bin/sh /data/dump_svn.sh Argument1 Argument2

 

Commandes

Pour éditer un crontab, on exécute la commande suivante : crontab -e
En quittant crontab, la console affichera une notification spécifiant si nous avons effectué une modification et nous précisant sa prise en charge si tel est le cas.

Sans modification :

root@srv01-125:/home/www/admin# crontab -e
No modification made

Avec modification :

nurun@srv01-125:/home/www/admin# crontab -e
crontab: installing new crontab

 

Pour ne faire qu’afficher le contenu du crontab, il faut utiliser la commande suivante :

crontab -l

 

Pour supprimer le crontab en cours, il faut utiliser :

crontab -r

 

Pour éditer, lister, supprimer le crontab d’un autre utilisateur, il faut effectuer la commande suivante en ayant bien évidement assez de droits pour le faire :

crontab -u randomuser -e

 

Utilisation

Voici quelques explications sur le fonctionnement des tâches planifiées via crontab

 *  *  *  *  *  environnement commande_à_exécuter
 |  |  |  |  |
 |  |  |  |  |---- : jour de semaine de 0 à 6 (avec dimanche = 0 ou 7) OU sun,mon,tue,wed,thu,fri,sat
 |  |  |  |------- : mois            de 1 à 12 OU jan,feb,mar,apr... 
 |  |  |---------- : jour du mois    de 1 à 31
 |  |------------- : heures          de 0 à 23
 |---------------- : minutes         de 0 à 59

* : Le caractère étoile correspond à toutes les valeurs.
, : La virgule correspond à une liste de valeurs. Par exemple : 1,2 (les valeurs 1 et 2)
– : Le tiret correspond à une plage de valeurs. Par exemple  : 2-5 (toutes les valeurs entre 2 et 5)
/ : le slash correspond à une fréquence de valeur. Par exemple : 0/5 (toutes les 5 valeurs)

 

Exemples :

 *  *  *  *  *  /bin/bash /home/script1.bash
 # s'éxécutera toutes les minutes de chaque heure de chaque jour du mois quelque soit le jour de la semaine

 0  0  *  *  *  /bin/bash /home/script1.bash 
 # s'exécutera tous les jours à minuit

 0  0  *  *  5  /bin/bash /home/script1.bash 
 # s'exécutera tous les vendredis à minuit

 0/5  0  *  *  5  /bin/bash /home/script1.bash 
 # s'exécutera toutes les 5mn les vendredis

 0/5  0  *  9  5  /bin/bash /home/script1.bash 
 # s'exécutera toutes les 5mn les vendredis du mois de septembre

 0/5  0  13  9  5  /bin/bash /home/script1.bash 
 # s'exécutera toutes les 5mn les vendredis 13 du mois de septembre

 

Ressources

Le site suivant permet de générer la ligne complète à insérer dans son crontab sans avoir à mémoriser le fonctionnement de crontab : http://www.openjs.com/scripts/jslibrary/demos/crontab.php

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *