Cron
De Linuxmemo.
(→Syntaxe crontab) |
|||
| Ligne 1 : | Ligne 1 : | ||
[[Catégorie:Linux_sysadmin]] | [[Catégorie:Linux_sysadmin]] | ||
| - | + | http://www.cronmaker.com/ | |
== Syntaxe crontab == | == Syntaxe crontab == | ||
Version du 4 juin 2013 à 11:39
Syntaxe crontab
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 l'abréviation du nom du mois (jan, feb, ...) ou le numéro du mois (de 1 à 12)
JJJ représente l'abréviation du nom du jour ou le numéro du jour dans la semaine :
0 = dimanche
1 = lundi
...
6 = samedi
7 = dimanche (représenté deux fois pour les deux types de semaine)
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 un courriel de confirmation. Pour éviter cela, il suffit de spécifier > /dev/null.
* * * * * command to be executed - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59)
Pour chaque unité de temps (minute/heure/...) les notations possibles sont :
* : à chaque unité de temps (0, 1, 2, 3, 4...) 5,8 : les unités de temps 5 et 8 2-5 : les unités de temps de 2 à 5 (2, 3, 4, 5) */3 : toutes les 3 unités de temps (0, 3, 6, 9...) 10-20/3 : toutes les 3 unités de temps, entre la dixième et la vingtième (10, 13, 16, 19)
Si, sur la même ligne, on trouve précisées une unité de temps « numéro du jour du mois » et une unité de temps « jour de la semaine », celles-ci sont considérées par crontab comme cumulatives.
| Raccourcis | Description | Équivalent |
|---|---|---|
@reboot | Au démarrage | Aucun |
@yearly | Tous les ans | 0 0 1 1 *
|
@annually | Tous les ans | 0 0 1 1 *
|
@monthly | Tous les mois | 0 0 1 * *
|
@weekly | Toutes les semaines | 0 0 * * 0
|
@daily | Tous les jours | 0 0 * * *
|
@midnight | Tous les jours | 0 0 * * *
|
@hourly | Toutes les heures | 0 * * * *
|
Dépannage
Dans les répertoires /etc/cron.xxxx/ qui sont exécutés par la commande "run-parts", les nons de script doivent avoir une syntaxe bien particulière sous peine de ne pas etre lancé. man: ...le nom satisfait les contraintes décrites ci-dessous. Les autres fichiers sont ignorés.
- les noms ne doivent être constitués que de lettres minuscules ou majuscules, de chiffres, de tirets bas (« underscore ») ou de tirets.
- assurez-vous d’avoir mis en première ligne ‘#!/bin/sh‘
- assurez-vous que le nom du script ne contiens pas de ‘.’. par exemple, vous devriez renommer ‘monscript.sh‘ en ‘monscript‘
- utilisez les chemins absolus si vous devez lire/écrire dans un fichier depuis le script
- essayez de lancer le script depuis le terminal pour vérifier qu’il n’y a pas de problème évident
- run-parts –test /etc/cron.hourly/‘ vous dira quels sont les scripts qui seront lancés, vous devriez voir votre script dans la liste
- essayez de le lancer comme cron, par exemple :
cd / && run-parts –report /etc/cron.hourly cron utilise syslog pour enregistrer les logs. Vérifiez le fichier de configuration (/etc/syslog.conf) pour voir où vont les logs et vérifiez les pour trouver les erreurs.
Test de la définition: http://cron.schlitt.info/