Syntaxe de base

📋 Format de l'heure Cron

* * * * * commande
Minute Heure Jour Mois Semaine Commande à exécuter

Minute (0-59)

Exécuter à la Nième minute de chaque heure

Heure (0-23)

Exécuter à la Nième heure de chaque jour

Jour (1-31)

Exécuter le Nième jour de chaque mois

Mois (1-12)

Exécuter au Nième mois de chaque année

Jour de la semaine (0-7)

Exécuter le Nième jour de chaque semaine
(0 et 7 représentent tous deux dimanche)

🎯 Caractères spéciaux

  • *Indique n'importe quelle valeur, correspond à toutes les valeurs possibles
  • ,Indique une liste, par exemple, 1,3,5 signifie 1 heure, 3 heures, 5 heures
  • -Indique une plage, par exemple, 1-5 signifie 1 à 5
  • /Indique un intervalle, par exemple, */5 signifie toutes les 5 unités
  • ?Utilisé dans les champs jour et jour de la semaine, n'indique aucune valeur spécifique
Commandes courantes

⏰ Tâches planifiées les plus courantes

🔄 Exécuter chaque minute

* * * * * /path/to/script.sh
S'exécute une fois par minute, couramment utilisé pour les tests

🕐 Exécuter toutes les heures

0 * * * * /path/to/script.sh
S'exécute à la minute 0 de chaque heure, par ex., 1:00, 2:00, 3:00

🌅 Exécuter à 8 AM chaque jour

0 8 * * * /path/to/script.sh
S'exécute à 8:00 AM chaque jour, adapté aux tâches quotidiennes

🌙 Exécuter tard dans la nuit chaque jour

0 2 * * * /path/to/backup.sh
S'exécute à 2:00 AM chaque jour, adapté aux tâches de sauvegarde

📅 Exécuter chaque lundi

0 9 * * 1 /path/to/weekly-report.sh
S'exécute à 9:00 AM chaque lundi, idéal pour la génération de rapports hebdomadaires

📆 Exécuter le 1er de chaque mois

0 0 1 * * /path/to/monthly-task.sh
S'exécute au petit matin du 1er de chaque mois, idéal pour les tâches mensuelles

⚡ Exécuter toutes les 5 minutes

*/5 * * * * /path/to/monitor.sh
S'exécute une fois toutes les 5 minutes, idéal pour les scripts de surveillance

🔄 Exécuter toutes les 30 minutes

*/30 * * * * /path/to/sync.sh
S'exécute une fois toutes les 30 minutes, idéal pour les tâches de synchronisation
Utilisation avancée

🚀 Configuration avancée de planification

💼 Exécuter toutes les heures les jours ouvrés

0 * * * 1-5 /path/to/workday-task.sh
S'exécute toutes les heures du lundi au vendredi, adapté à la bureautique

🎯 Exécuter à des heures précises

30 9,14,18 * * * /path/to/reminder.sh
S'exécute à 9:30, 14:30, 18:30 chaque jour

📈 Toutes les 15 minutes pendant les heures de travail

*/15 9-17 * * 1-5 /path/to/status-check.sh
S'exécute toutes les 15 minutes pendant les jours ouvrés de 9 AM à 5 PM

🌸 Tâches trimestrielles

0 0 1 1,4,7,10 * /path/to/quarterly.sh
S'exécute le premier jour de chaque trimestre (janvier, avril, juillet, octobre)

🎉 Tâches annuelles

0 0 1 1 * /path/to/yearly-cleanup.sh
Exécute le nettoyage annuel le 1er janvier de chaque année

⏰ Combinaisons temporelles complexes

15,45 */2 * * * /path/to/complex-task.sh
Exécute aux minutes 15 et 45 toutes les 2 heures

🔧 Avec redirection de sortie

0 2 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1
Lance une sauvegarde et enregistre les journaux, y compris les messages d'erreur

🌐 Paramètres des variables d'environnement

0 3 * * * cd /app && /usr/bin/python3 script.py
Se place dans le répertoire spécifié et exécute un script Python
Exemples pratiques

💡 Scénarios d'application pratiques

📊 Sauvegarde de base de données

0 2 * * * mysqldump -u root -p database_name > /backup/db_$(date +\%Y\%m\%d).sql
Sauvegarde la base de données MySQL à 2 h du matin chaque jour

🧹 Nettoyage des journaux

0 1 * * 0 find /var/log -name "*.log" -mtime +30 -delete
Supprime les fichiers journaux de plus de 30 jours à 1 h du matin chaque dimanche

🔄 Synchronisation automatique Git

*/10 * * * * cd /path/to/repo && git pull origin main
Récupère automatiquement les mises à jour du dépôt Git toutes les 10 minutes

📧 E-mail de rapport système

0 8 * * 1 df -h | mail -s "Weekly Disk Usage" [email protected]
Envoie un e-mail d'utilisation du disque chaque lundi

🌡️ Surveillance du système

*/5 * * * * top -bn1 | grep "Cpu(s)" >> /var/log/cpu_usage.log
Enregistre l'utilisation du CPU toutes les 5 minutes

🔒 Vérification du certificat SSL

0 9 * * * openssl x509 -in /etc/ssl/cert.pem -noout -checkend 2592000
Vérifie quotidiennement si le certificat SSL est sur le point d'expirer

📱 Vérification de l'état de l'API

*/2 * * * * curl -f http://localhost:8080/health || echo "API Down" | mail -s "Alert" [email protected]
Vérifie l'état de l'API toutes les 2 minutes, envoie un e-mail en cas d'anomalie

🔄 Redémarrage du conteneur Docker

0 4 * * * docker restart $(docker ps -q --filter "status=exited")
Redémarre les conteneurs Docker arrêtés à 4 h du matin chaque jour
Astuces et conseils

💎 Conseils d'expert et meilleures pratiques

📝 Commandes de gestion de cron

crontab -e # Modifier la crontab de l'utilisateur actuel
crontab -l # Afficher la crontab actuelle
crontab -r # Supprimer la crontab actuelle
Commandes de base de gestion de crontab

👤 Gestion au niveau utilisateur

sudo crontab -u username -e # Modifier la crontab d'un utilisateur spécifié
sudo crontab -u username -l # Afficher la crontab d'un utilisateur spécifié
Gérer les tâches planifiées d'autres utilisateurs

📊 Bonnes pratiques de journalisation

0 2 * * * /path/to/script.sh >> /var/log/cron_script.log 2>&1
Rediriger à la fois la sortie standard et les erreurs vers un fichier journal

🔧 Paramètres des variables d'environnement

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 2 * * * /path/to/script.sh
Définir les variables d'environnement dans crontab

⚠️ Empêcher le chevauchement des tâches

0 * * * * flock -n /tmp/script.lock -c '/path/to/script.sh'
Utiliser des verrous de fichiers pour empêcher l'exécution répétée des scripts

🔍 Débogage des tâches cron

# Vérifier l'état du service cron
systemctl status cron
# Afficher les journaux cron
tail -f /var/log/cron
Méthodes courantes de débogage des tâches planifiées

📊 Expressions temporelles spéciales

@reboot /path/to/startup.sh # Exécuter au démarrage du système
@yearly /path/to/yearly.sh # Exécuter chaque année
@monthly /path/to/monthly.sh # Exécuter chaque mois
@weekly /path/to/weekly.sh # Exécuter chaque semaine
@daily /path/to/daily.sh # Exécuter chaque jour
@hourly /path/to/hourly.sh # Exécuter toutes les heures
Utilisez des chaînes spéciales pour simplifier les expressions temporelles

⚡ Conseils d'optimisation des performances

# Éviter l'exécution lorsque le système est occupé
5 2 * * * /path/to/heavy-task.sh
# Décaler les heures d'exécution pour éviter d'exécuter plusieurs tâches simultanément
7 3 * * * /path/to/task1.sh
13 3 * * * /path/to/task2.sh
Planifier raisonnablement les heures d'exécution des tâches