Configurer des cronjobs : tâches automatiques sur le serveur
Les cronjobs sont des tâches planifiées qui s'exécutent automatiquement à des moments spécifiques. Ils sont essentiels pour la maintenance du serveur, les sauvegardes et les tâches d'application. Chez Theory7, nous utilisons des cronjobs pour tout, des sauvegardes quotidiennes à la surveillance précise à la minute. Dans ce guide, vous apprendrez à configurer et à gérer correctement les cronjobs.
Qu'est-ce que les cronjobs ?
Un cronjob est un planificateur de tâches Unix qui exécute des commandes ou des scripts à des moments planifiés. Applications typiques :
- Sauvegardes - Sauvegarde quotidienne de bases de données et de fichiers
- Maintenance - Nettoyage et rotation des fichiers journaux
- E-mail - Envoi de newsletters ou de notifications
- Applications - Cron WordPress, planificateur Laravel
- Surveillance - Exécution de vérifications de santé
Éditer le crontab
Chaque utilisateur a son propre crontab. Ouvrez avec :
crontab -e
Cela ouvre votre crontab personnel dans l'éditeur par défaut. Les cronjobs système se trouvent dans :
/etc/crontab
/etc/cron.d/
Comprendre la syntaxe cron
Une ligne cron se compose de 5 champs de temps plus la commande :
* * * * * commande
| | | | |
| | | | +-- Jour de la semaine (0-7, 0 et 7 = dimanche)
| | | +---- Mois (1-12)
| | +------ Jour du mois (1-31)
| +-------- Heure (0-23)
+---------- Minute (0-59)
Caractères spéciaux
- * - Toute valeur
- , - Plusieurs valeurs (1,3,5)
- - - Plage (1-5)
- / - Pas (*/5 = toutes les 5)
Exemples expliqués
# Chaque jour à 03:00
0 3* * * /chemin/vers/script.sh
# Chaque heure à l'heure pleine
0 * * * * /chemin/vers/script.sh
# Toutes les 5 minutes
*/5* * * * /chemin/vers/script.sh
# Chaque jour de la semaine à 08:30
30 8* * 1-5 /chemin/vers/script.sh
# Le 1er et le 15 de chaque mois à minuit
0 0 1,15* * /chemin/vers/script.sh
# Chaque dimanche à 04:00
0 4* * 0 /chemin/vers/script.sh
Créer des cronjobs
Exemple : Sauvegarde de base de données
crontab -e
Ajoutez :
# Sauvegarde MySQL quotidienne à 03:00
0 3* * * mysqldump -u root -pMOTDEPASSE base_de_données > /backups/db_$(date +\%Y\%m\%d).sql
Remarque : Dans crontab, % doit être échappé comme \%.
Exemple : Nettoyage de fichiers journaux
# Supprimer les logs de plus de 30 jours chaque semaine (dimanche 05:00)
0 5 * * 0 find /var/log -name "*.log" -mtime +30 -delete
Exemple : Exécuter un script PHP
# Script cron PHP toutes les 15 minutes*/15 * * * * /usr/bin/php /var/www/site/cron.php
Utilisez toujours le chemin complet vers php.
Cronjobs pour les applications web
WordPress WP-Cron
WordPress a un système cron intégré qui n'est pas fiable avec peu de trafic. Passez à un vrai cron :
- Ajoutez à wp-config.php :
- Créez une entrée crontab :
define('DISABLE_WP_CRON', true);
*/5* * * * /usr/bin/php /var/www/wordpress/wp-cron.php
Planificateur Laravel
Laravel a un planificateur qui doit s'exécuter chaque minute :
* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1
Sortie et journalisation
Sortie vers un fichier
0 3 * * * /chemin/vers/script.sh >> /var/log/mon-cron.log 2>&1
- >> - Ajouter à un fichier
- 2>&1 - Rediriger les erreurs vers le même fichier
Sortie par e-mail
Par défaut, cron envoie la sortie par e-mail à l'utilisateur. Configurez un e-mail :
MAILTO=admin@votredomaine.fr
0 3* * * /chemin/vers/script.sh
Ou supprimez toute sortie :
0 3 * * * /chemin/vers/script.sh > /dev/null 2>&1
Gérer le crontab
Voir tous les cronjobs
crontab -l
Cronjobs d'un autre utilisateur
sudo crontab -l -u www-data
Supprimer le crontab
crontab -r
Remarque : cela supprime TOUS les cronjobs de cet utilisateur.
Voir les journaux cron
Vérifiez si les cronjobs s'exécutent :
# Debian/Ubuntu
grep CRON /var/log/syslog
# CentOS/RHEL
tail -f /var/log/cron
Erreurs courantes
Le script fonctionne manuellement, pas en tant que cron
Les variables d'environnement sont différentes dans cron. Utilisez des chemins complets :
# Mauvais
0 3* * * script.sh
# Bon
0 3 * * * /usr/local/bin/script.sh
Définir le PATH dans crontab
PATH=/usr/local/bin:/usr/bin:/bin
0 3* * * script.sh
Permissions
Assurez-vous que les scripts sont exécutables :
chmod +x /chemin/vers/script.sh
Articles connexes
- Se connecter en SSH depuis Windows (PuTTY)
- Utiliser Composer via SSH
- Surveiller les ressources du serveur
- Stratégie de sauvegarde du serveur
Plus d'informations sur les serveurs VPS chez Theory7
Besoin d'aide ?
Nous sommes là pour vous ! Vous rencontrez un problème ou avez des questions ? Notre équipe de support est prête à vous aider personnellement. Envoyez-nous un message via le système de tickets - nous répondons généralement dans quelques heures et sommes heureux de vous aider.
0 van 0 vonden dit nuttig