Ce que l'on pense lorsque l'on parle de "traiter des tâches à des heures déterminées" sous Linux et Unix, c'est bien sûr crontab. C'est tellement réconfortant de savoir que le système effectuera des tâches répétées tout seul ! Mais si l'on ne sait pas comment l'utiliser, cela peut devenir compliqué, à la fois un ange et un démon. Basé sur mes luttes répétées avec crontab, je vais partager ce que j'ai appris sur ce qu'est crontab, comment l'utiliser et quelques conseils d'utilisation.

Qu'est-ce que crontab ?

crontab est, en termes simples, un outil pour "prévoir l'exécution automatique et régulière de tâches" dans les systèmes Linux et Unix. Grâce à ces réglages, je peux facilement gérer des tâches ennuyeuses répétées quotidiennement, hebdomadairement ou mensuellement. Une fois configuré, il exécute des tâches sans que j'aie besoin d'intervenir, donnant l'impression que le système est devenu mon assistant personnel.

Ce qui rend tout cela possible, c'est le démon cron. Le démon cron vérifie le contenu du fichier crontab et exécute les commandes aux heures spécifiées, et c'est cela qui fait que j'apprécie tant utiliser crontab.

Découvrons les commandes de crontab

crontab possède plusieurs commandes utiles. En les comprenant bien, je peux non seulement gagner du temps, mais aussi vérifier et modifier les réglages facilement.

  • crontab -e : commande qui ouvre le fichier crontab pour ajouter ou modifier des tâches.
  • crontab -l : affiche le contenu du fichier crontab de l'utilisateur actuel.
  • crontab -r : supprime le fichier crontab de l'utilisateur actuel. (à manipuler avec précaution)

Quel est le format d'un fichier crontab ?

Un fichier crontab est constitué d'une ligne par tâche, où chaque ligne comporte cinq champs de temps et une commande. Quand on voit cela pour la première fois, on peut se demander ce que cela signifie, mais en les regardant un à un, c'est plutôt simple.

*  *  *  *  * /path/to/command
-  -  -  -  -
|  |  |  |  +----- Jour (0 - 7) (dimanche est 0 ou 7)
|  |  |  +------- Mois (1 - 12)
|  |  +--------- Jour (1 - 31)
|  +----------- Heure (0 - 23)
+------------- Minute (0 - 59)

Chaque champ peut contenir un nombre ou un *, le * représentant toutes les valeurs. Par exemple, * * * * * signifie "exécuter à chaque minute, chaque heure, chaque jour, chaque mois, chaque jour de la semaine". En résumé, cela s'exécute chaque minute. Si on l'applique correctement, cela ouvre la porte à une grande variété de planifications.

Exécution d'une tâche toutes les 5 minutes : voir crontab à travers un exemple

Considérons la commande */5 * * * * /path/to/myscript.sh. Ce réglage signifie que le script nommé myscript.sh sera exécuté toutes les 5 minutes.

  • */5 : toutes les 5 minutes
  • * : toutes les heures
  • * : tous les jours
  • * : tous les mois
  • * : tous les jours de la semaine

En d'autres termes, le script sera exécuté toutes les 5 minutes, 24 heures par jour. C'est vraiment pratique d'avoir quelque chose qui fonctionne régulièrement sans souci !

Explication de l'utilisation de crontab

Exemples d'utilisation variés

Vous pouvez configurer crontab en fonction de diverses situations. Voyons quelques exemples de son utilisation.

  1. Exécution d'un script chaque heure
    0 * * * * /path/to/script.sh
    Exécute le script toutes les heures à zéro minute. Par exemple, à 12:00, 13:00, 14:00…
  2. Exécution d'une tâche de sauvegarde chaque jour à 3 heures du matin
    0 3 * * * /path/to/backup.sh
    En disposant d'une sauvegarde à 3 heures du matin chaque jour, cela pourra réduire les heures supplémentaires.
  3. Exécution le 1er et le 15 de chaque mois à 2 heures
    0 2 1,15 * * /path/to/script.sh
    Il est bon d'exécuter des tâches importantes de manière répétée au début et à la moitié de chaque mois.
  4. Exécution uniquement le week-end
    30 8 * * 6,7 /path/to/weekend_script.sh
    Cela configure l'exécution d'un script à 8h30 chaque samedi et dimanche.

Considérations lors de la configuration de crontab

Les tâches crontab sous Linux persistent même après le redémarrage du système. Cependant, il y a un point à faire attention : si une tâche est prévue pendant que le système est éteint, elle ne sera pas exécutée. Par exemple, si j'ai prévu une tâche à 15h et que le système ne s'allume qu'à 16h, alors la tâche de 15h sera simplement ignorée.

Pour résoudre ce problème, on peut utiliser un outil appelé anacron. Anacron exécute les "tâches manquées" même lorsque le système est éteint. Cela compense les limitations de crontab, donc c'est utile pour les tâches qui doivent absolument être exécutées à intervalles réguliers.


Une bonne utilisation de crontab peut m'apporter une grande aide. En automatisant des travaux importants par le biais de la planification de temps, je peux non seulement économiser du temps, mais aussi réduire les erreurs. Bien sûr, au début, cela peut sembler difficile à cause du format, mais une fois qu'on s'y habitue, une commodité inégalée vous attend. Que diriez-vous de plonger dans le monde de crontab après avoir lu cet article ?