Crontab
L'outil Crontab se retrouve pratiquement sur toutes les distributions afin d'exécuter des tâches planifiées, scripts, programme ... Il offre de nombreuses options de plannifications. Contrairement à Anacron, il n'y a pas de reprise des tâches. A savoir, si le serveur est arrêté avant une exécution planifiée, celle-ci ne sera pas réalisée au redémarrage.
La définition des tâches peut être réalisée au niveau système et également par utilisateur déclaré sur la machine. Cet article présente la mise en place au niveau système, sur une machine Ubuntu.
Votre avis
Nobody voted on this yet
|
|
Fichier de planification
Les planifications s'effectuent au travers du fichier /etc/crontab
qui respecte une nomenclature précise.
Variables d'exécution
Au niveau du fichier, deux variables peuvent être mises en place:
Paramètre | Description |
---|---|
SHELL | Shell utilisé pour exécuter les scripts. |
PATH | Emplacements disponibles pour les programmes. |
Format de planification
Chaque ligne de planification doit comporter sept valeurs, séparée par une tabulation ou un espace:
Paramètre | Description |
---|---|
m | Minutes d'exécution. Les valeurs 0 à 59 peuvent être utilisées, ou * pour toutes les minutes. |
h | Heure d'exécution. Les valeurs 0 à 23 peuvent être utilisées, ou * pour toutes les heures. |
dom | Jour du mois d'exécution. Les valeurs 1 à 31 peuvent être utilisées, ou * pour tous les jours du mois. |
mon | Mois d'exécution. Les valeurs 1 à 12 peuvent être utilisées, ou les abréviations jan, feb, mar, apr ..., ou * pour tous les mois. |
dow | Jour de la semaine d'exécution. 0 ou 7 correspond à dimanche, 1 le lundi et ainsi de suite, ou * pour tous les jours de la semaine. |
user | Utilisateur du système, sous lequel la commande est exécutée. |
command | La commande exécutée. |
Les paramètres de planifications peuvent faire l'objet de combinaison pour spécifier plusieurs valeurs, où des intervalles. Par exemple 1-6
sur le paramètre dow
permet de spécifier du lundi au samedi.
La valeur 1,3,5
sur le paramètre dow
permet de spécifier le premier, troisième et cinquième jour.
Il est également possible de combiner ces formats. 1-3,6
dans dow
permet de spécifier du premier au troisième, et le sixième jour de la semaine.
Installation standard Ubuntu
Sur une installation de Ubuntu, le fichier /etc/crontab
est le suivant:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Pour cette configuration, le shell utilisé est /bin/sh
, et les programmes sont disponibles sous les emplacements:
- /usr/local/sbin
- /usr/local/bin
- /sbin
- /bin
- /usr/sbin
- /usr/bin
Quatre planifications sont mises en place:
Commande | utilisateur | Planification |
---|---|---|
cd / && run-parts --report /etc/cron.hourly | root | Exécution tous les jours de l'année:
Toutes les heures à la 17ème minutes:
|
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) | root | Exécution tous les jours de l'année:
A 6h25:
|
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) | root | Exécution tous les dimanche:
A 6h47:
|
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) | root | Exécution tous les premiers jours de chaque mois:
A 6h52:
|
Sécurité
Deux fichiers permettent de sécuriser l'exécution de la commande crontab
:
- Fichier
/etc/cron.allow
Si ce fichier est présent, l'utilisateur connecté doit figurer dans ce fichier afin de pouvoir exécuter crontab.
- Fichier
/etc/cron.deny
Si ce fichier est présent, l'utilisateur connecté ne doit pas figurer dans ce fichier afin de pouvoir exécuter crontab.
Si les deux fichiers sont présents, la priorité est portée sur le fichier /etc/cron.allow
. Si aucun fichier n'est présent, l'utilisation est dépendante de l'installation sur le système.
Exemples d'utilisation
Les exemples d'utilisation sont tirés des différents articles de sauvegarde Backup.
Exécution tous les jours, sauf le lundi
Afin d'effectuer une telle planification, il est nécessaire de paramétrer correctement le paramètre dow
. L'exemple présenté exécute la commande à 3h30.
Paramètre | Description |
---|---|
m | 30 |
h | 2 |
dom | * |
mon | * |
dow | 0,2-6
0 pour le dimanche. 2-6 pour le mardi au samedi. |
Exécution que le lundi
Afin d'effectuer une telle planification, il est nécessaire de paramétrer correctement le paramètre dow
. L'exemple présenté exécute la commande à 3h30.
Paramètre | Description |
---|---|
m | 30 |
h | 2 |
dom | * |
mon | * |
dow | 1
1 pour le lundi. |
Exécution que le premier jour des mois
Afin d'effectuer une telle planification, il est nécessaire de paramétrer correctement le paramètre dom
. L'exemple présenté exécute la commande à 1h15.
Paramètre | Description |
---|---|
m | 15 |
h | 1 |
dom | 1
1 pour le premier jour du mois. |
mon | * |
dow | * |
Exécution tous les jours
Afin d'effectuer une telle planification, il est nécessaire de paramétrer correctement le paramètre dom
. L'exemple présenté exécute la commande à 4h45.
Paramètre | Description |
---|---|
m | 45 |
h | 4 |
dom | * |
mon | * |
dow | * |
Voir aussi
Quelques liens utilisés pour l'étude de Crontab et la rédaction de l'article: