📋 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
⏰ 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
🚀 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
💡 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
💎 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
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é
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
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
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
@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
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