Dans l’univers du développement web et de l’administration système, les tâches répétitives peuvent rapidement devenir un casse-tête. Que ce soit pour sauvegarder une base de données, envoyer des emails de rappel ou nettoyer des fichiers temporaires, ces opérations doivent être exécutées de manière fiable et sans intervention humaine. C’est ici que le cron job intervient comme une solution d’automatisation incontournable.
Mais qu’est-ce qu’un cron job exactement ? Comment le configurer sur un serveur Linux ou via un hébergement web comme cPanel ? Et surtout, comment l’exploiter sans se perdre dans les lignes de commande ? Ce guide complet répond à toutes vos questions, même si vous partez de zéro. Vous découvrirez les bases des tâches planifiées, les commandes essentielles, et des exemples concrets pour automatiser vos processus en toute sérénité.
Qu’est-ce qu’un Cron Job et à quoi sert-il ?
Un cron job (ou tâche cron) est une commande planifiée qui permet d’exécuter automatiquement un script, un programme ou une commande à une date et une heure précises, de manière récurrente. Le terme « cron » provient du démon cron, un service Linux qui gère ces tâches en arrière-plan.
Imaginez un scénario où vous devez :
- Sauvegarder votre site WordPress chaque nuit à 2h du matin.
- Envoyer une newsletter à vos abonnés tous les lundis à 9h.
- Nettoyer les fichiers temporaires de votre serveur chaque dimanche à minuit.
Sans cron job, vous devriez effectuer ces actions manuellement, ce qui est chronophage et source d’erreurs. Avec un cron job, tout se fait automatiquement, sans que vous ayez à lever le petit doigt. C’est la solution idéale pour gagner du temps et éviter les oublis.
Les composants clés d’un cron job
Pour comprendre comment fonctionne un cron job, il est essentiel de maîtriser ses trois éléments principaux :
- La commande à exécuter : Il s’agit du script, de la requête SQL ou de la commande système que vous souhaitez lancer. Par exemple :
php /chemin/vers/mon_script.phpoumysqldump -u utilisateur -p motdepasse ma_base_de_donnees > /backup/backup.sql. - L’horaire de planification : Déterminé par une syntaxe spécifique (que nous détaillerons plus tard), il définit quand la tâche doit s’exécuter. Par exemple :
0 2 * * *pour minuit et 2h du matin tous les jours. - Le shell utilisé : Généralement
/bin/bashou/bin/sh, il indique dans quel environnement la commande doit être exécutée.
Ces trois éléments sont combinés dans un fichier appelé crontab (pour « cron table »), qui stocke toutes les tâches planifiées pour un utilisateur donné.
Comment fonctionne un Cron Job sur Linux ?
Sur un système Linux, les cron jobs sont gérés par le démon cron, un service qui s’exécute en arrière-plan. Voici comment il fonctionne en pratique :
1. Le démon cron
Le démon cron est un processus système qui vérifie en permanence les tâches planifiées dans les fichiers crontab. Il existe deux types de crontab :
- Le crontab utilisateur : Contient les tâches planifiées pour un utilisateur spécifique. Chaque utilisateur peut avoir son propre crontab, accessible via la commande
crontab -e. - Le crontab système : Géré par l’administrateur système (root), il contient les tâches planifiées pour l’ensemble du système. On y accède via
sudo crontab -e.
Le démon cron vérifie ces fichiers à intervalles réguliers (généralement toutes les minutes) et exécute les tâches dont l’heure est arrivée.
2. La syntaxe des tâches cron
La syntaxe d’un cron job est composée de cinq champs suivis de la commande à exécuter. Voici leur signification :
Position Unité de temps Valeurs possibles Exemple 1 Minute 0-59 * (toutes les minutes), 15 (à la 15ème minute) 2 Heure 0-23 0 (minuit), 14 (14h) 3 Jour du mois 1-31 1 (1er du mois), */2 (tous les 2 jours) 4 Mois 1-12 1 (janvier), */3 (tous les 3 mois) 5 Jour de la semaine 0-6 (0=dimanche) 0 (dimanche), 1-5 (du lundi au vendredi)
Voici quelques exemples concrets :
0 3 * * * /usr/bin/php /home/user/backup.php: Exécute un script PHP de sauvegarde tous les jours à 3h du matin.*/15 * * * * /usr/bin/wget -q -O - http://mon-site.com/cron.php >/dev/null 2>&1: Lance une requête HTTP toutes les 15 minutes.0 0 * * 0 /usr/bin/find /tmp -type f -mtime +7 -delete: Supprime les fichiers temporaires plus vieux de 7 jours chaque dimanche à minuit.
3. Gérer ses cron jobs avec la commande crontab
Pour créer, modifier ou supprimer un cron job, utilisez la commande crontab -e. Cette commande ouvre l’éditeur de texte par défaut (souvent nano ou vim) avec le fichier crontab de l’utilisateur actuel.
Exemple de workflow :
- Ouvrez le crontab :
crontab -e - Ajoutez une ligne avec votre tâche cron (par exemple) :
0 2 * * * /usr/bin/php /home/user/backup.php - Enregistrez et quittez l’éditeur (
Ctrl+O, puisCtrl+Xdans nano). - Vérifiez que la tâche a bien été enregistrée :
crontab -l
Pour supprimer toutes les tâches cron d’un utilisateur, utilisez : crontab -r.
Configurer un Cron Job via cPanel (hébergement web)
Si vous utilisez un hébergement web comme cPanel, vous n’aurez pas besoin d’accéder à la ligne de commande. cPanel propose une interface graphique intuitive pour configurer vos cron jobs. Voici comment procéder :
1. Accéder à l’interface Cron Jobs dans cPanel
Pour configurer un cron job via cPanel :
- Connectez-vous à votre compte cPanel.
- Dans la section « Avancé », cliquez sur Cron Jobs.
- Vous arrivez sur une page avec deux sections : « Ajouter une nouvelle tâche cron » et « Tâches cron actuelles ».
2. Configurer l’horaire de la tâche
Dans la section « Ajouter une nouvelle tâche cron », vous devez définir :
- Les unités de temps : Minutes, heures, jours du mois, mois et jours de la semaine. cPanel propose des menus déroulants pour faciliter la sélection.
- La commande à exécuter : Il peut s’agir d’un script PHP, d’une URL à appeler, ou d’une commande système. Par exemple :
php /home/votre_utilisateur/public_html/cron.phpouwget -q -O - http://votre-site.com/cron.php.
Exemple de configuration pour une sauvegarde quotidienne à 2h du matin :
- Minutes :
0 - Heures :
2 - Jours du mois :
* - Mois :
* - Jours de la semaine :
* - Commande :
php /home/votre_utilisateur/public_html/backup.php
3. Tester et valider la tâche
Une fois la tâche configurée, cliquez sur Ajouter une nouvelle tâche cron. cPanel affichera un message de confirmation. Pour vérifier que la tâche s’exécute correctement :
- Créez un fichier de log pour suivre l’exécution :
echo "Cron job exécuté le $(date)" >> /home/votre_utilisateur/public_html/cron.log - Attendez l’heure prévue et consultez le fichier log pour confirmer que la tâche a bien été lancée.
Si la tâche ne s’exécute pas, vérifiez :
- Les permissions du script (il doit être exécutable).
- Le chemin absolu vers le script ou la commande.
- Les logs d’erreur (disponibles dans cPanel ou via
tail -f /var/log/cronsur le serveur).
Exemples concrets de Cron Jobs pour WordPress
WordPress est une plateforme qui bénéficie grandement de l’automatisation via les cron jobs. Voici quelques exemples pratiques pour optimiser votre site :
1. Sauvegarder votre base de données WordPress
Pour éviter de perdre vos données en cas de problème, il est crucial de sauvegarder régulièrement votre base de données MySQL. Voici un exemple de cron job pour une sauvegarde quotidienne :
0 3 * * * mysqldump -u [utilisateur] -p[mot_de_passe] [nom_de_la_base] > /chemin/vers/backup/backup-$(date +%Y-%m-%d).sql
Remplacez :
[utilisateur]par votre nom d’utilisateur MySQL.[mot_de_passe]par votre mot de passe MySQL.[nom_de_la_base]par le nom de votre base de données WordPress./chemin/vers/backup/par le répertoire où vous souhaitez stocker les sauvegardes.
Pour plus de sécurité, stockez le mot de passe dans un fichier de configuration MySQL (via ~/.my.cnf) plutôt que de l’inclure directement dans la commande.
2. Nettoyer les révisions et brouillons de WordPress
WordPress génère de nombreuses révisions et brouillons qui alourdissent votre base de données. Pour les supprimer automatiquement chaque semaine :
0 4 * * 0 wp db query "DELETE FROM wp_posts WHERE post_type = 'revision';" --path=/chemin/vers/votre/site
Cette commande utilise l’outil en ligne de commande WP-CLI, disponible sur la plupart des hébergements. Assurez-vous que WP-CLI est installé et que le chemin vers votre site est correct.
3. Publier automatiquement des articles programmés
Si vous utilisez la fonction de publication programmée de WordPress, vous pouvez forcer l’exécution des articles en attente via un cron job. Cela est utile si votre hébergement ne gère pas correctement les tâches WordPress (wp-cron.php) :
*/15 * * * * wget -q -O - http://votre-site.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Cette commande appelle le fichier wp-cron.php toutes les 15 minutes pour déclencher les publications en attente.
4. Optimiser les tables de la base de données
Pour maintenir les performances de votre base de données, optimisez les tables WordPress chaque mois :
0 5 1 * * wp db optimize --path=/chemin/vers/votre/site
Cette commande utilise à nouveau WP-CLI pour optimiser toutes les tables de la base de données.
Bonnes pratiques et erreurs à éviter
Bien que les cron jobs soient puissants, leur mauvaise utilisation peut entraîner des problèmes de sécurité, de performance ou de fiabilité. Voici les bonnes pratiques à suivre :
1. Sécurisez vos scripts et commandes
- Évitez les mots de passe en clair : Ne jamais inclure de mot de passe directement dans une commande cron. Utilisez plutôt des fichiers de configuration sécurisés (comme
~/.my.cnfpour MySQL) ou des variables d’environnement. - Limitez les permissions : Les scripts exécutés par un cron job doivent avoir les permissions minimales nécessaires. Par exemple, un script de sauvegarde n’a pas besoin d’être exécutable par tout le monde (
chmod 700 script.sh). - Utilisez HTTPS pour les requêtes web : Si votre cron job appelle une URL (via
wgetoucurl), assurez-vous que l’URL utilise HTTPS pour éviter les fuites de données.
2. Gérez les logs et les erreurs
Un cron job qui échoue en silence peut passer inaperçu. Pour éviter cela :
- Redirigez les sorties : Utilisez
>/dev/null 2>&1pour supprimer les sorties standard et d’erreur, ou redirigez-les vers un fichier log :>> /chemin/vers/log.txt 2>&1. - Mettez en place des notifications : Configurez des alertes par email en cas d’échec. Dans cPanel, ajoutez
MAILTO="votre@email.com"en haut de votre crontab. Sur Linux, utilisez&& mail -s "Succès cron job" votre@email.comdans la commande. - Testez manuellement vos scripts : Avant de planifier un cron job, exécutez le script manuellement pour vérifier qu’il fonctionne sans erreur

