Cron job

Les cron jobs sont des tâches récurrentes qui peuvent être exécutées automatiquement sur des systèmes d'exploitation de type Unix tels que Linux ou iOS/Mac OS X ainsi que sur des environnements de serveurs. Le daemon cron constitue la base d’une tâche cron. Il agit comme une impulsion temporelle pour les différentes tâches et fonctionne en arrière-plan du système dès son démarrage. Si des cron jobs sont définis, ils sont automatiquement exécutés par le système aux moments spécifiés. Les cron jobs les plus courants sont la gestion de fichiers, la suppression ou l'archivage de données, ou la création de statistiques sur les visiteurs du serveur ou du site web. L'acronyme cron signifie "command run on notice".


Historique[modifier]

À l'origine, cron était un service de système sous Unix, qui était utilisé avec plusieurs utilisateurs du système. Le cron tab était lancé toutes les minutes; les commandes qui y étaient notées étaient exécutées par le système avec un timestamp (horodatage) et les droits de l'utilisateur (serveur root). Cela servait principalement à l'administration du système. Cette fonction a survécu jusqu'à aujourd'hui - cependant, les daemons cron actuels n'utilisent plus le temps virtuel (par exemple, lorsque l'utilisateur lance cron), mais le temps réel pour faire tourner les serveurs en permanence.

Tout comme le traitement par lots ou la programmation par lots, les tâches cron sont traitées successivement et séquentiellement. Les données sont notées dans un tableau avec certains arguments, qui contiennent des informations sur le temps et les commandes d'exécution. L'avantage avec cron est la spécification exacte du timestamp qui déclenche un cron job.

Alors que la programmation par lots est souvent utilisée pour l'installation et la configuration des serveurs, les cron jobs sont souvent utilisés pour l'administration du système. En général, cela se fait à des moments où il y a peu de visiteurs sur le site, car les cron jobs peuvent mobiliser d'importantes ressources du serveur. Cron permet de traiter avec précision et automatiquement diverses tâches d'analyse et d'administration.


Comment fonctionne un cron job ?[modifier]

Les conditions préalables à l'utilisation de cron jobs sont un serveur de type unix comme Linux ou les systèmes d'exploitation BSD (BSD : Berkely Software Distribution), et un serveur dédié qui n'est pas partagé avec d'autres clients. S'il est possible de faire fonctionner les cron jobs sur des serveurs partagés, cela consommerait également les ressources des autres clients. L'accès au serveur web se fait via le client SSH (Secure Shell) ou Telnet pour établir une connexion sécurisée. Le téléchargement de fichiers cron et de scripts peut se faire à l'aide d'un programme FTP.


Le fichier cron tab[modifier]

Le fichier crontab est à la base de diverses tâches cron. Il peut être créé à l'aide de la commande

crontab -e

dans n'importe quel éditeur en ligne de commande. Des programmes tels que GNOME Schedule offrent une interface utilisateur graphique pour la gestion des cron jobs. De plus, de nombreux sites web tels que corntab.com ou cronjob.de proposent des interfaces utilisateur visuelles et d'autres services.

Un cron tab se compose de six colonnes disposées dans un tableau. Les cinq premières colonnes contiennent le timestamp sous forme de minutes, heures, jours, mois, jours de la semaine. La dernière colonne contient la commande à exécuter. Chaque colonne est séparée par un espace; les entrées multiples peuvent être séparées par des virgules.

La syntaxe ressemble à ceci:

minute hour day month day-of-week command-line-to-execute

Les valeurs possibles pour les cinq premières colonnes sont:

  • 0 - 59 pour minute (minut)
  • 0 - 23 pour heure (hour)
  • 1 - 31 pour jour (day)
  • 1 - 12 pour mois (month)
  • 0 - 7 pour jour de la semaine (day-of-week)


Le caractère "*" est souvent utilisé. Il est synonyme de toutes les unités de temps de la colonne respective. Par exemple, pour chaque jour ou chaque mois. Avec @reeboot, @yearly, @monthly, @weekly, @daily et @hourly, les cron jobs peuvent également être exécutés régulièrement si aucun timestamp exact ne doit être attribué. Dans la sixième colonne, le chemin absolu ou relatif du script à exécuter est généralement noté.

Variables de cron[modifier]

Les commandes à exécuter sont intégrées dans le cron tab sous forme de variables d'environnement. La plupart des scripts utilisés sont des scripts PHP, PERL ou SHELL. Une sélection de commandes possibles:

  • PATH : Path spécifie le chemin où cron recherche des scripts ou des commandes.
  • SHELL : Le shell spécifie l'interpréteur de ligne de commande pour exécuter le script. La valeur par défaut est "/bin/sh". Différents interprètes sont disponibles sur Unix (par exemple /bin/tcsh ou /bin/csh).
  • MAILTO : Avec mailto, vous pouvez spécifier les utilisateurs à qui cron enverra les résultats du script après son exécution. La valeur par défaut est celle de l'utilisateur qui commande.

Pour chaque tâche cron, différentes variables peuvent être définies, de sorte que les timestamps, les commandes et la sortie du script peuvent être adaptés à l'utilisateur respectif. En outre, il est possible de documenter le travail du script via LOGFILE.


Exemple d’un cron job[modifier]

Un script qui doit être exécuté chaque jour à 5h30 du matin. Le résultat est envoyé à l'adresse électronique.

MAILTO=exemple.recepteur@mail.fr
30 5 * * * /usr/local/bin/path/test.php


Importance pour le référencement[modifier]

Les cron jobs sont un moyen efficace d'automatiser les tâches d'administration et d'évaluation qui prennent beaucoup de temps sur un serveur. Les bases de données peuvent être nettoyées et sauvegardées en guise de backup. Les dossiers sont archivés ou supprimés, le système automatiquement maintenu. En outre, des statistiques sur les visiteurs peuvent être créées pour un serveur web, qui sont envoyées à un utilisateur sur une base quotidienne. Ainsi, les cron jobs représentent un soulagement pour une analyse du web basée sur des logfiles. Les données qu'un serveur stocke sont des informations précieuses pour l'optimisation d'un site web en général.

Comme les cron jobs se basent et utilisent des scripts ainsi que des systèmes de gestion de contenu, les possibilités d'application sont relativement grandes. En fonction du scénario et de l'environnement du contenu, des newsletters peuvent être envoyées, les niveaux de stock peuvent être vérifiés ou des mesures telles que les meilleures ventes et les évaluations des articles peuvent être calculées sur une base régulière. En outre, la charge du serveur peut être contrôlée dans une certaine mesure avec une tâche cron. C'est pourquoi les cron jobs sont particulièrement utiles lorsque le nombre de visiteurs sur le site est limité. Par ailleurs, l'accès par cron nécessite des ressources ; il ne doit pas se faire au détriment du serveur et augmenter le temps de chargement des visiteurs normaux lorsqu'ils lancent le site web. C’est un aspect qui passe souvent inaperçu.