Dans cet article
Qu'est-ce que Crontab ?
Crontab (table cron) est un planificateur de taches base sur le temps present dans les systemes d'exploitation de type Unix. Il vous permet de planifier des commandes ou des scripts a executer automatiquement a des intervalles specifies — de chaque minute a une fois par an. Le demon cron lit les fichiers crontab et execute les commandes planifiees aux heures designees.
Chaque utilisateur du systeme peut avoir son propre fichier crontab, et il existe egalement un crontab systeme. Le fichier crontab contient une liste de taches cron, ou chaque ligne definit un horaire utilisant une expression temporelle a cinq champs suivie de la commande a executer.
Syntaxe des expressions Cron
Une expression cron se compose de cinq champs separes par des espaces, chacun representant une unite de temps :
- Minute (0-59) — specifie a quelle minute de l'heure la tache doit s'executer
- Heure (0-23) — specifie a quelle heure du jour en format 24 heures
- Jour du mois (1-31) — specifie quel jour du mois
- Mois (1-12) — specifie quel mois de l'annee
- Jour de la semaine (0-7, ou 0 et 7 representent dimanche) — specifie quel jour de la semaine
Les caracteres speciaux incluent : * (toute valeur), / (valeurs par pas, ex. */5 signifie toutes les 5 unites), - (plages, ex. 1-5 signifie du lundi au vendredi), et virgule (listes, ex. 1,15 signifie le 1er et le 15).
Modeles Cron courants
Voici les expressions cron les plus frequemment utilisees :
- */5 * * * * — toutes les 5 minutes, couramment utilise pour les verifications de sante et les scripts de surveillance
- 0 * * * * — toutes les heures a la minute 0, adapte aux synchronisations de donnees horaires
- 0 0 * * * — quotidiennement a minuit, le planning standard pour les sauvegardes et la rotation des logs
- 0 0 * * 1-5 — chaque jour ouvrable a minuit, utile pour les traitements des jours ouvrables uniquement
- 0 0 1 * * — le premier jour de chaque mois a minuit, typiquement utilise pour les rapports mensuels
- 0 9,17 * * 1-5 — a 9h et 17h les jours ouvrables, ideal pour les notifications de debut et fin de journee
Essayez gratuitement — sans inscription
Construire une expression Cron →Cas d'utilisation courants
Les taches cron automatisent pratiquement toute tache systeme repetitive :
- Rotation et nettoyage des logs — compresser, archiver ou supprimer automatiquement les anciens fichiers de log
- Sauvegardes de base de donnees — planifier des commandes regulieres mysqldump, pg_dump ou mongodump
- Generation de rapports — compiler et envoyer par email des rapports quotidiens, hebdomadaires ou mensuels
- Vidage du cache — purger periodiquement les entrees de cache expirees
- Surveillance systeme — executer des verifications de sante et des alertes d'espace disque a intervalles reguliers
Conseils et pieges
Meme les developpeurs experimentes rencontrent des pieges cron courants :
- Conscience du fuseau horaire — cron utilise le fuseau horaire systeme par defaut. Definissez TZ dans votre crontab ou utilisez UTC
- Taches qui se chevauchent — si une tache prend plus de temps que l'intervalle, plusieurs instances peuvent s'executer simultanement. Utilisez flock pour empecher le chevauchement
- Problemes de PATH — cron s'execute avec un environnement minimal. Utilisez toujours des chemins absolus
- Gestion de la sortie — cron envoie stdout et stderr par email par defaut. Redirigez la sortie vers un fichier de log
- Debogage — verifiez /var/log/syslog ou /var/log/cron pour les enregistrements d'execution
Questions frequemment posees
Cron peut-il planifier des taches avec une precision a la seconde ?
Le cron standard ne prend pas en charge les secondes — la plus petite unite est une minute. Si vous avez besoin d'une precision a la seconde, vous pouvez utiliser une solution de contournement ou passer aux minuteries systemd.
Quelle est la difference entre cron et les minuteries systemd ?
Cron est le planificateur Unix traditionnel utilisant des expressions a cinq champs. Les minuteries systemd offrent une precision inferieure a la minute, des minuteries persistantes et une meilleure integration de journalisation. Cron est plus simple et plus portable ; systemd est plus puissant mais specifique a Linux.
Comment tester une tache cron avant de la planifier ?
Executez d'abord la commande manuellement dans votre terminal. Puis simulez l'environnement cron avec : env -i /bin/sh -c 'votre-commande'. Enfin, planifiez-la pour s'executer chaque minute, verifiez, puis changez au planning desire.