Crontab

De EjnTricks
Révision de 20 septembre 2014 à 02:36 par Etienne (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

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.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Configuration-icon.pngFichier de planification

Les planifications s'effectuent au travers du fichier /etc/crontab qui respecte une nomenclature précise.

Command-icon.png 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.

Html-Editor-icon.png 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.

Tool-box.png 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:
  • dom = *
  • mon = *
  • dow = *

Toutes les heures à la 17ème minutes:

  • h = *
  • m = 17
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) root Exécution tous les jours de l'année:
  • dom = *
  • mon = *
  • dow = *

A 6h25:

  • h = 6
  • m = 25
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) root Exécution tous les dimanche:
  • dom = *
  • mon = *
  • dow = 7

A 6h47:

  • h = 6
  • m = 47
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) root Exécution tous les premiers jours de chaque mois:
  • dom = 1
  • mon = *
  • dow = *

A 6h52:

  • h = 6
  • m = 52

Icon ACL.png 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.

title= 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 *

Viewer icon.png Voir aussi

Quelques liens utilisés pour l'étude de Crontab et la rédaction de l'article:

http://adminschoice.com/crontab-quick-reference

http://fr.wikipedia.org/wiki/Crontab