skip to content

Recherche

Cron

Planification de tâches automatisées sur Linux avec cron et crontab !

Cron est un programme qui permet d’exécuter automatiquement des commandes et des scripts à intervalles réguliers selon une planification définie.

⚙️ Gestion du crontab

📌 Action🧠 Commande
✏️ Éditer le crontabcrontab -e
📋 Lister les tâchescrontab -l
🗑️ Supprimer toutes les tâchescrontab -r
👤 Éditer pour un utilisateursudo crontab -e -u username
👁️ Voir le crontab d’un utilisateursudo crontab -l -u username
📝 Installer depuis un fichiercrontab fichier.txt
🆔 Voir qui a des crontabsls -la /var/spool/cron/crontabs/

🕐 Syntaxe crontab

📌 Élément🧠 Position📊 Valeurs possibles
⏱️ Minute10-59
🕐 Heure20-23
📅 Jour du mois31-31
📆 Mois41-12 ou JAN-DEC
📋 Jour de la semaine50-7 ou SUN-SAT

Format

 * * * * * commande_à_exécuter
 │ │ │ │ │
 │ │ │ │ └── Jour de la semaine (0-7, 0=dimanche)
 │ │ │ └──── Mois (1-12)
 │ │ └────── Jour du mois (1-31)
 │ └──────── Heure (0-23)
 └────────── Minute (0-59)

🔣 Caractères spéciaux

📌 Caractère🧠 Signification📊 Exemple
*Toutes les valeurs* * * * *
,Liste de valeurs0,15,30,45 * * * *
-Plage de valeurs1-5 * * * *
/Pas/Intervalle*/15 * * * *
@rebootAu démarrage système@reboot script.sh

⏰ Planifications fréquentes

📌 Action🧠 Planification📊 Cron
🕛 Toutes les minutesChaque minute* * * * *
🕐 Toutes les heuresChaque heure0 * * * *
🌅 Chaque jour à 6h00Quotidien0 6 * * *
📅 Chaque lundi à 8h30Hebdomadaire30 8 * * 1
📆 Le 1er de chaque moisMensuel0 0 1 * *
🕒 Toutes les 15 minutesQuart d’heure*/15 * * * *
🕕 Toutes les 5 minutesCinq minutes*/5 * * * *
🌃 Tous les jours à minuitQuotidien nocturne0 0 * * *
🏢 En semaine à 9h00Jours ouvrés0 9 * * 1-5

📝 Exemples pratiques

📌 Action🧠 Commande cron
💾 Sauvegarde quotidienne0 2 * * * /scripts/backup.sh
📊 Rapport hebdomadaire0 8 * * 1 /scripts/weekly-report.sh
🧹 Nettoyage des logs0 0 * * 0 /scripts/cleanup-logs.sh
🔄 Synchronisation fichiers*/30 * * * * rsync -av /src/ /dest/
📧 Envoi d’email quotidien0 9 * * * /scripts/daily-email.sh
🔍 Vérification système*/10 * * * * /scripts/health-check.sh

📂 Emplacements cron : quelle différence ?

Crontab utilisateur vs. système

📌 Méthode🧠 Utilisation📊 Avantages⚠️ Inconvénients
crontab -eTâches utilisateur personnelIsolation, sécuritéDisparaît si utilisateur supprimé
/etc/crontabTâches système globalesPersistant, rootRisque sécurité, format différent
/etc/cron.d/Applications/packagesModularitéNécessite format système

Cas d’usage recommandés

  • crontab -e → Sauvegardes perso, scripts utilisateur, maintenance compte
  • /etc/crontab → Tâches système critiques (nettoyage, maintenance serveur)
  • /etc/cron.d/ → Applications installées, scripts partagés entre admins
  • /etc/cron.{daily,weekly}/ → Scripts simples sans horaires précis

Format différent pour système

# Crontab utilisateur (crontab -e)
0 2 * * * /home/user/backup.sh
 
# Fichiers système (/etc/crontab, /etc/cron.d/)
0 2 * * * root /home/user/backup.sh
#         ↑ utilisateur requis

📂 Fichiers et dossiers

📌 Fichier/Dossier🧠 Description
/etc/crontabCrontab système principal
/etc/cron.d/Crontabs système supplémentaires
/etc/cron.hourly/Scripts exécutés chaque heure
/etc/cron.daily/Scripts exécutés chaque jour
/etc/cron.weekly/Scripts exécutés chaque semaine
/etc/cron.monthly/Scripts exécutés chaque mois
/var/spool/cron/crontabs/Crontabs des utilisateurs
/var/log/cronLogs d’exécution cron

🔍 Surveillance et logs

📌 Action🧠 Commande
📜 Voir les logs cronsudo tail -f /var/log/cron
🔍 Chercher dans les logssudo grep "utilisateur" /var/log/cron
📊 Statut du service cronsudo systemctl status cron
▶️ Démarrer le servicesudo systemctl start cron
🔁 Redémarrer le servicesudo systemctl restart cron
🔄 Recharger la configurationsudo systemctl reload cron
⏸️ Arrêter le servicesudo systemctl stop cron

🛠️ Dépannage courant

🆘 Problème🧠 Solution
❌ Tâche ne s’exécute pasVérifier les logs et les permissions
📧 Pas d’email de notificationConfigurer le MTA système
🛡️ Problème de permissionsUtiliser des chemins absolus
🌐 Variables d’environnementDéfinir PATH dans le crontab
⏰ Mauvais fuseau horaireVérifier timedatectl
📝 Syntaxe incorrecteTester avec crontab -l

📋 Variables d’environnement

Variables utiles dans le crontab

Variables système

# Définir l'éditeur
EDITOR=nano
 
# Définir les chemins
PATH=/usr/local/bin:/usr/bin:/bin
 
# Email pour les notifications
MAILTO=admin@exemple.com
 
# Shell à utiliser
SHELL=/bin/bash
 
# Répertoire de travail
HOME=/home/utilisateur

Exemple avec variables

SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
MAILTO=admin@exemple.com
 
# Sauvegarde quotidienne à 2h00
0 2 * * * /scripts/backup.sh > /var/log/backup.log 2>&1
 
# Nettoyage hebdomadaire
0 3 * * 0 /usr/bin/find /tmp -type f -mtime +7 -delete

🎯 Raccourcis temporels

📌 Raccourci🧠 Équivalent📊 Description
@yearly0 0 1 1 *Une fois par an
@annually0 0 1 1 *Une fois par an
@monthly0 0 1 * *Une fois par mois
@weekly0 0 * * 0Une fois par semaine
@daily0 0 * * *Une fois par jour
@midnight0 0 * * *À minuit chaque jour
@hourly0 * * * *Une fois par heure
@rebootAu démarrageAu redémarrage système

Exemples avec raccourcis

# Sauvegarde annuelle
@yearly /scripts/annual-backup.sh
 
# Redémarrage hebdomadaire
@weekly /sbin/reboot
 
# Nettoyage quotidien
@daily /scripts/cleanup.sh