Cron : qu’est-ce que c’est et comment utiliser ce planificateur

L’univers de Linux est vraiment formidable. Il existe quasiment une solution libre pour chaque besoin et en général, ça marche très bien ! Aujourd’hui, si on veut mettre en ligne un site web ou une application sur un serveur dédié ou VPS, il y a de grandes chances qu’il tourne sur une distribution Linux. Dans la plupart des cas, ce sera Ubuntu ou Debian, mais les hébergeurs proposent aussi de nombreuses autres distributions Linux. Il y en a pour tous les goûts et vous pouvez garder vos habitudes entre vos différents serveurs. Vous avez la liberté de choisir ce qui vous convient le mieux.

Dans cet article, nous allons parler du programme cron, un outil très pratique qu’il est presque indispensable de maîtriser pour un administrateur système. Il existe bien sur d’autres solutions, mais cron est le plus couramment utilisé, il est simple et léger.

C’est quoi cron ?

Cron est un outil de planification de tâches automatisées sur les systèmes Unix/Linux. Il est utilisé pour exécuter des commandes ou des scripts à des intervalles réguliers, tels que chaque minute, heure, jour, semaine ou mois.

Les tâches planifiées sont appelées les cron jobs. Avec l’utilitaire cron vous pouvez donc facilement automatiser l’exécution de taches répétitives, lancer la création sauvegardes, envoyer des rapports, faire un traitement sur une base de données et bien plus encore en planifiant l’exécution de scripts. À titre d’exemple, vous pouvez par exemple lancer une commande Laravel automatiquement avec cron.

Comment utiliser cron sur votre serveur Linux ?

Maintenant que vous savez ce qu’est cron et pourquoi il est utile, passons à la partie la plus excitante : comment l’utiliser ? Vous allez voir ce n’est pas si compliqué et une fois maitrisé, vous ne pourrez plus vous en passer ! La première étape est de comprendre la syntaxe de cron :

Une tâche cron est définie par six champs qui déterminent quand elle doit être exécutée. Voici l’explication des différents paramètres dans l’ordre :

  • Minute (0 – 59) : Ce champ spécifie la minute à laquelle la tâche doit être exécutée. Les valeurs valides vont de 0 à 59. Par exemple, si vous définissez ce champ sur 30, la tâche s’exécutera à la 30e minute de chaque heure.
  • Heure (0 – 23) : Ce champ spécifie l’heure à laquelle la tâche doit être exécutée. Les valeurs valides vont de 0 à 23, où 0 représente minuit et 23 représente 23 heures. Par exemple, si vous définissez ce champ sur 14, la tâche s’exécutera à 14h00.
  • Jour du mois (1 – 31) : Ce champ spécifie le jour du mois auquel la tâche doit être exécutée. Les valeurs valides vont de 1 à 31. Par exemple, si vous définissez ce champ sur 15, la tâche s’exécutera le 15 de chaque mois. Prudence, faites bien attention si vous mettez le 31 dans cette variable. Pour les mois qui s’arrêtent au 30 ou pour le mois de février, votre tache ne s’exécutera pas !
  • Mois (1 – 12) : Ce champ spécifie le mois au cours duquel la tâche doit être exécutée. Les valeurs valides vont de 1 à 12, où 1 représente janvier et 12 représente décembre. Par exemple, si vous définissez ce champ sur 6, la tâche s’exécutera en juin.
  • Jour de la semaine (0 – 7) : Ce champ spécifie le jour de la semaine auquel la tâche doit être exécutée. Les valeurs valides vont de 0 à 7, où 0 et 7 représentent tous deux le dimanche, 1 représente le lundi, et ainsi de suite jusqu’à 6 qui représente le samedi. Par exemple, si vous définissez ce champ sur 3, la tâche s’exécutera le mercredi.
  • Chemin vers la commande : Ce champ spécifie la commande ou le script à exécuter pour la tâche Cron. Il s’agit généralement d’un chemin absolu vers un script ou une commande Unix/Linux. Par exemple : /chemin/vers/la/commande.

La combinaison de ces six champs vous permet de définir des tâches cron qui s’exécutent à des intervalles spécifiques et à des moments précis. C’est très flexible et vous pouvez totalement piloter le lancement de vos scripts sur le serveur.

Ajouter une tâche cron

On sait à quoi correspondent ces valeurs mais comment lancer ces taches automatiquement ? Pour cela nous allons utiliser une commande qui permet d’éditer le fichier de configuration de cron. Voici comment ouvrir le fichier de configuration de cron :

crontab -e

Vous devriez alors obtenir le fichier d’exemple suivant si vous n’avez jamais utilisé l’utilitaire cron sur votre serveur :

Avant d’ajouter des lignes dans ce fichier de configuration des cron jobs, voici quelques exemples pour bien comprendre.

Exécuter un job cron tous les jours à minuit :

0 0 * * * /chemin/vers/la/commande

Exécuter un job cron tous les jours à une heure précise, ici à 14h30 :

30 14 * * * /chemin/vers/la/commande

Exécuter un job cron toutes les 5 minutes :

*/5 * * * * /chemin/vers/la/commande

Exécuter un job cron toutes les minutes :

*/1 * * * * /chemin/vers/la/commande

Exécuter un job chaque semaine le lundi à 12h00 :

0 12 * * 1 /chemin/vers/la/commande

Exécuter un job le premier jour de chaque mois à 6h30 :

30 6 1 * * /chemin/vers/la/commande

Exécuter un job toutes les 30 minutes entre 9h00 et 17h00, du lundi au vendredi :

*/30 9-17 * * 1-5 /chemin/vers/la/commande

Il ne reste plus qu’à ajouter votre tâche dans le fichier de configuration des cron jobs vu plus haut et voilà, c’est tout ! Votre tache devrait se lancer au moment et avec la fréquence que vous avez mentionné.

Une fois que vous avez ajouté des lignes pour lancer des scripts avec cron, vous pouvez vérifier qu’elles sont bien prises en compte. Pour lister l’ensemble des tâches cron vous pouvez utiliser cette commande :

crontab -l

Rediriger la sortie de vos jobs Cron vers un fichier de log

Enfin pour terminer cet article, voici une dernière astuce pour surveiller ce qu’il se passe avec un fichier de log sur votre tâche cron. Par défaut cron utilise lui-même un fichier de log qui se trouve dans :

/var/log/syslog

Il est possible de faire un fichier de log pour par cron job pour que ce soit ensuite plus facile à exploiter pour vous. On va pouvoir ainsi renvoyer la sortie du script directement dans un fichier. Pour ce faire, il vous suffit d’ajouter les instructions suivantes :

0 2 * * * /chemin/vers/mon_script.sh > /chemin/vers/mon_job.log 2>&1

Cela enregistrera la sortie standard et les erreurs dans le fichier « mon_job.log ». Je pense que pour commencer cron vous avez maintenant quelques clés en main pour vous en sortir. C’est vraiment un outil très pratique et comme ça, vous n’avez plus d’excuses pour automatiser la création de sauvegardes !

Laisser un commentaire