This is an old revision of the document!
cron/crontab
Cron est un programme qui permet, sous Unix, d'automatiser des tâches en les programmant pour se lancer à une heure/date précise (l'équivalent du planificateur de taches sous Windows). On distingue le démon crond et l'utilitaire de configuration crontab.
Chaque utilisateur peut utiliser cron ; on peut limiter l'accès à l'utilitaire en créant/complétant les fichiers /etc/cron.allow
(et /etc/cron.deny
) des noms d'utilisateurs adéquats. Le fichier cron.allow
est prioritaire à cron.deny
.
Pour utiliser cron, on utilise crontab
, l'utilitaire d'édition et de vérification syntaxique des fichiers de configuration.
On peut lister, editer ou supprimer (remove) ce fichier de conf :
crontab [-u user] {-l e r}
L'option -u
permet au root d'accéder à celui d'un autre utilisateur.
Quand on édite un fichier de configuration - on utilise donc crontab -e
- on obtient un éditeur de texte fonctionnant comme vi. En une phrase, cet utilitaire fonctionne ainsi :
- i pour rentrer en mode insertion (pour écrire)
- echap pour rentrer en mode commande
- echap puis :wq pour sauvegarder et quitter
- echap puis :q! pour quitter sans sauvegarder
La syntaxe du fichier est la suivante : # m h dom mon dow command
qui signifit respectivement minute, hour, day of month, month, day of week, et commande (il faut au moins un espace ou une tab entre chaque colonne). Les intervalles sont naturels, sauf pour la colonne dow qui va de 0 (dimanche) à 7 (samedi).
Il existe des méta-caractères :
- * tous
- / spécifie une répétition
- - définit une plage
- , spécifie plusieurs valeurs
Donc, en résumé :
- on lance la commande
crontab -e
- on entre en mode insertion :
i
- on modifie le fichier à sa guise (cf exemples plus bas)
- on sauvegarde et on quitte :
<echap> :wq
On obtient une confirmation de la prise en compte de la modification :
crontab: installing new crontab
Voici des exemples (toujours 1 ligne par commande).
- Lancer script.sh tous les jours à 2h :
0 2 * * * ./script.sh
- Lancer mrtg avec un paramètre toutes les 5 min :
*/5 * * * * mrtg /var/www/mrtg/mrtg.cfg
- lancer script.sh du lundi au vendredi à 23h :
0 23 * * 1-5
- lancer script.sh les 1 et 15 du mois à 23h :
0 23 1,15 * *
Il existe des chaînes de caractères spéciales :
@reboot
: exécution une fois au démarrage@yearly
: exécution une fois par an, “0 0 1 1 *”@annually
: exécution une fois par an, “0 0 1 1 *”@monthly
: exécution une fois par mois, “0 0 1 * *”@weekly
: exécution une fois par semaine, “0 0 * * 0”@daily
: exécution une fois par jour, “0 0 * * *”@midnight
: execution une fois par jour, “0 0 * * *”@hourly
: execution une fois par heure, “0 * * * *”