Que répondre à la question « Qu’est-ce qu’un cron job ? » ? Pre­miè­re­ment : un « daemon ». Deuxiè­me­ment : un dieu. Tout du moins, si l’on s’en tient uni­que­ment à la con­no­ta­tion du nom de cette fonction. À pro­pre­ment parler, le terme « Cron » est une abré­via­tion de « command run on notice », c’est-à-dire une « commande exécutée à date ». Mais l’abré­via­tion peut tout autant évoquer Chronos, le dieu du temps des Grecs anciens. Sur les systèmes d’ex­ploi­ta­tion Linux ou macOS, cette commande s’appelle « Cron-Daemon » (parfois aussi Cron-system).

Le jeu de mot sur le dieu grec du temps est d’ailleurs un excellent moyen mné­mo­tech­nique pour se souvenir de l’objet et de la fonction d’une tâche cron. Le système cron s’exécute en arrière-plan d’un système d’ex­ploi­ta­tion et peut effectuer au­to­ma­ti­que­ment des tâches (jobs) pla­ni­fiées à des moments définis. Si l’on associe le nom de système cron et le principe de tâches pla­ni­fiées, on obtient donc le terme de cron jobs, ou tâches cron.

Découvrez plus en détails dans notre article ce qui se cache derrière ces tâches per­met­tant d’optimiser les res­sources, exécutées au­to­ma­ti­que­ment et de manière répétée, et fa­mi­lia­ri­sez-vous avec le fonc­tion­ne­ment du système.

Qu’est-ce qu’un cron job ?

Une tâche cron est une tâche exécutée au­to­ma­ti­que­ment dans un système d’ex­ploi­ta­tion. Afin d’exécuter ces tâches, le système fournit ré­gu­liè­re­ment des commandes. Il peut par­fai­te­ment s’agir d’une simple tâche, mais, en règle générale, on utilise plusieurs tâches complexes, donc plusieurs cron jobs. Ces tâches ont le grand avantage de permettre un degré de per­son­na­li­sa­tion élevé.

Chaque tâche cron est composée de trois éléments :

  • Un script à exécuter ;
  • Une commande qui exécute ré­gu­liè­re­ment le script ;
  • Une action ou le log du script.

Un exemple concret d’uti­li­sa­tion de cette fonction ? Les tâches ré­gu­lières d’un serveur. Ainsi, on peut, entre autres, lancer au­to­ma­ti­que­ment l’envoi d’une news­let­ter, la collecte de sta­tis­tiques ou le nettoyage de banques de données avec des tâches cron.

Tous les systèmes d’ex­ploi­ta­tion disposant d’un système cron, et donc d’un daemon cron, peuvent exécuter des cron jobs. C’est le cas de tous les systèmes Unix et BSD (Berkeley Software Dis­tri­bu­tion) comme macOS ou Linux.

Les systèmes d’ex­ploi­ta­tion peuvent exécuter des tâches selon la pla­ni­fi­ca­tion définie au préalable, exac­te­ment comme le prévoit leur dé­no­mi­na­tion « Command run on notice » (commande exécutée à date). Les tâches de routine peuvent ainsi se lancer de manière par­fai­te­ment au­to­ma­ti­sée. Outre la condition d’utiliser un système d’ex­ploi­ta­tion avec un daemon cron, il faut respecter d’autres prérequis pour pouvoir mettre en place des cron jobs :

Note
Il existe des in­ter­faces uti­li­sa­teur spéciales pour faciliter la mise en place des tâches cron, ainsi que des paquets d’hé­ber­ge­ment Web contenant des cron jobs pré­con­fi­gu­rés pour les projets Web. Pour gérer un hé­ber­ge­ment Web à l’aide de tâches cron, nous vous con­seil­lons la lecture de notre article d’aide sur les cron jobs.

Quelles tâches peut-on exécuter avec des cron jobs ?

Les tâches pla­ni­fiées sont le plus souvent utilisées pour sau­ve­gar­der des données, et de loin. Par exemple, si vous souhaitez mettre en place une sau­ve­garde avec tar pour archiver vos données, les tâches cron seront par­fai­te­ment adaptées. Gé­né­ra­le­ment, on les utilise aussi pour nettoyer des bases de données et exploiter les sta­tis­tiques de visite des sites Web.

Les tâches cron peuvent être associées à un système de gestion de contenus pour envoyer au­to­ma­ti­que­ment une news­let­ter ou sur­veil­ler les stocks des boutiques en ligne. Ces tâches per­met­tent de contrôler le rem­plis­sage des serveurs et peuvent adapter au­to­ma­ti­que­ment de nouvelles in­for­ma­tions dans la des­crip­tion des produits, comme la moyenne des éva­lua­tions client.

Note

Les tâches au­to­ma­ti­sées des cron jobs sont si variées qu’il faut les employer à bon escient : elles con­som­ment en effet beaucoup de res­sources. Il faut donc bien évaluer la per­ti­nence d’une tâche cron et ainsi que le moment de son exécution. Des scripts PHP adaptés per­met­tent de s’assurer que les tâches cron s’exécutent uni­que­ment lorsqu’elles ne per­turbent pas d’autres processus.

Aperçu des tâches les plus im­por­tantes :

  • Nettoyage de banques de données : les entrées obsolètes sont sup­pri­mées, par exemple des com­men­taires datés ou des iden­ti­fiants de connexion ayant expiré.
  • Création de sta­tis­tiques : les tâches cron peuvent mettre à jour quo­ti­dien­ne­ment le nombre de visites sur une page, par exemple.
  • Ac­tua­li­sa­tion du flux RSS : une tâche cron peut générer ré­gu­liè­re­ment un nouveau fichier XML.
  • Pla­ni­fi­ca­tion et pu­bli­ca­tion de nouveaux contenus.
  • Envoi d’une news­let­ter : il est possible d’envoyer des emails à un instant précis.
  • Création de factures : à l’aide d’un cron job, on peut créer et envoyer au­to­ma­ti­que­ment des factures (re­grou­pées et à in­ter­valles spé­ci­fiques).
  • Sau­ve­garde d’une base de données : la plupart du temps, pour des bases de données de petite taille n’excédant pas 20 MO.
  • Ap­pren­tis­sage au­to­ma­tique : les tâches cron peuvent alimenter une in­tel­li­gence ar­ti­fi­cielle à un moment précis avec de nouvelles entrées.
  • Mises à jour : on peut planifier les mises à jour lo­gi­cielles à un moment précis.

Quelle est la structure standard d’une commande cron ?

Les pos­si­bi­li­tés de per­son­na­li­sa­tion sont le grand avantage des cron jobs. Pour adapter une tâche planifiée cron, l’uti­li­sa­teur dispose d’une base de trois variables qui doivent être sys­té­ma­ti­que­ment ren­seig­nées :

  1. PATH : affiche le chemin d’accès à la commande ou au script ;
  2. SHELL : indique l’in­ter­pré­teur de commandes à utiliser pour exécuter le script ;
  3. MAILTO : renseigne l’uti­li­sa­teur à qui il faut envoyer les résultats de la tâche cron ; en règle générale, l’abonné.

Avec ces trois variables fixes, aux­quelles peuvent venir s’ajouter d’autres, les uti­li­sa­teurs peuvent définir eux-mêmes leurs propres cron jobs. Gé­né­ra­le­ment, on utilise des scripts SHELL, PHP et PERP pour ces commandes.

Note

Pour plus de ren­seig­ne­ments sur les commandes sous Linux et autres, consultez notre article de fond consacré aux commandes Linux.

Comment fonc­tionne un cron job ?

Pour qu’une tâche cron puisse exécuter ce qu’on attend d’elle, il faut tout d’abord fournir une commande. Ensuite, le daemon cron s’exécute en arrière-plan et effectue des tâches non in­te­rac­tives. Sous Windows, c’est ce qu’on appelle en général un « service ».

Les tâches cron sont, par principe, au repos, et attendent de recevoir une commande : ou bien di­rec­te­ment du système d’ex­ploi­ta­tion, ou bien d’un autre or­di­na­teur en réseau. La commande est transmise par le biais d’un fichier cron (un simple fichier texte), qui planifie la tâche pour un instant donné.

Les tâches cron sont définies et con­fi­gu­rées dans un tableau appelé crontab. Ce tableau liste les temps à respecter et la suite de commandes à exécuter.

Note
Le programme per­met­tant d’éditer chaque tâche cron s’appelle aussi « crontab ».

Le fichier système standard Crontab « crontab » est placé dans le ré­per­toire /etc/cron.*/.

Hé­ber­ge­ment Web
Hé­ber­ge­ment Web de pointe au meilleur prix
  • 3x plus rapide, 60 % d'éco­no­mie
  • Haute dis­po­ni­bi­lité >99,99 %
  • Seulement chez IONOS : jusqu'à 500 Go inclus

Quatre exemples de cron jobs simples

Avec le logiciel crontab, on peut éditer des crontabs. Voici la commande cor­res­pon­dante :

crontab -e

La syntaxe est re­la­ti­ve­ment claire. Ainsi, chaque cron job respecte le format suivant :

*     *     *     *     * Commande à exécuter
-      -      -      -     -
|     |     |     |     |
|     |     |     |     +----- Jour de la semaine (0 - 7) (Dimanche correspond à 0 et 7)
|     |     |     +------- Mois (1 - 12)
|     |     +--------- Jour (1 - 31)
|     +----------- Heure (0 - 23)
+------------- Minute (0 - 59)

Ici, l’étoile * indique que la tâche cron doit être exécutée le jour, le mois, à l’heure ou à la minute donnés. Pour les jours de la semaine et les mois, on peut utiliser les trois premières lettres en anglais, par exemple sun pour dimanche. Ce format de notation ne permet pas d’effectuer des tâches dans un in­ter­valle de temps donné.

Pour planifier pré­ci­sé­ment un in­ter­valle, il faut remplacer les étoiles par des chiffres. En rem­pla­çant la première étoile par 8-10, la commande sera exécutée pendant les minutes 8, 9 et 10. Si, à l’inverse, on inscrit */2, la commande sera exécutée toutes les deux minutes. On peut combiner ces deux fonctions. Au total, on peut utiliser trois valeurs de temps pour les cinq premières étoiles :

  • * = exécuter à tout moment (à chaque in­di­ca­tion)
  • */n = exécuter tous les n
  • n,x,y = exécuter le/à n,x,y

Exemple 1 : cron job pour exécuter une sau­ve­garde

Pour exécuter une sau­ve­garde tous les matins à 6 heures, rédigez la commande suivante :

0 6 * * * /usr/bin/backup.sh

Exemple 2 : jouer un son toutes les 30 minutes

On peut aussi utiliser les tâches cron pour jouer un son à in­ter­valles réguliers :

*/30 * * * * /usr/bin/play_sound.sh

Exemple 3 : email de rappel

Le cron job suivant envoie un email de rappel à 8 heures et 18 heures :

0 8,18 * * * /usr/bin/send_reminder_mail.sh

Exemple 4 : Merci, Admin

On peut aussi utiliser une tâche cron pour ne jamais oublier le jour de présence de l’ad­mi­nis­tra­teur système :

0 0 30 07 * (echo "Merci à tous les admins système" | mail -s "Un admin ne dort pas, il root." user@domain.xy)
Aller au menu principal