Hébergement web16 décembre 2025 23 vues

Comment configurer les tâches CRON sur cPanel

Comment configurer les tâches CRON sur cPanel

Comment configurer les tâches CRON sur cPanel

Temps estimé : 10 minutes
Difficulté : Intermédiaire ⭐⭐
Prérequis : Accès à cPanel, connaissances basiques en ligne de commande


📋 Introduction

Les tâches CRON (ou Cron Jobs) permettent d'automatiser l'exécution de scripts et de commandes à des intervalles réguliers sur votre serveur. C'est un outil puissant pour automatiser les tâches répétitives sans intervention manuelle.

Exemples d'utilisation courants

Tâche Fréquence typique
🔄 Sauvegardes automatiques Quotidien ou hebdomadaire
📧 Envoi de newsletters Hebdomadaire
🗑️ Nettoyage de fichiers temporaires Quotidien
📊 Génération de rapports Quotidien ou mensuel
🔔 WordPress WP-Cron Toutes les 15-30 minutes
💾 Synchronisation de données Toutes les heures
📬 Vérification d'emails Toutes les 5 minutes
🛒 Mise à jour des stocks (e-commerce) Toutes les heures

🔢 Comprendre la Syntaxe CRON

Structure d'une expression CRON

Une tâche CRON est définie par 5 champs temporels + la commande à exécuter :

*    *    *    *    *    commande à exécuter
│    │    │    │    │
│    │    │    │    └─── Jour de la semaine (0-7) (0 et 7 = Dimanche)
│    │    │    └──────── Mois (1-12)
│    │    └───────────── Jour du mois (1-31)
│    └────────────────── Heure (0-23)
└─────────────────────── Minute (0-59)

Valeurs possibles

Champ Valeurs Caractères spéciaux
Minute 0-59 * , - /
Heure 0-23 * , - /
Jour du mois 1-31 * , - /
Mois 1-12 ou jan-dec * , - /
Jour de la semaine 0-7 ou sun-sat * , - /

Caractères spéciaux

Caractère Signification Exemple
* Toutes les valeurs * * * * * = chaque minute
, Liste de valeurs 1,15,30 = à la minute 1, 15 et 30
- Plage de valeurs 1-5 = de 1 à 5
/ Intervalle */15 = toutes les 15 unités

Exemples d'expressions CRON

Expression Signification
* * * * * Chaque minute
*/5 * * * * Toutes les 5 minutes
*/15 * * * * Toutes les 15 minutes
0 * * * * Chaque heure (à la minute 0)
0 */2 * * * Toutes les 2 heures
0 0 * * * Chaque jour à minuit
0 2 * * * Chaque jour à 2h du matin
30 4 * * * Chaque jour à 4h30
0 0 * * 0 Chaque dimanche à minuit
0 0 * * 1-5 Du lundi au vendredi à minuit
0 0 1 * * Le 1er de chaque mois à minuit
0 0 1 1 * Le 1er janvier à minuit
0 8,12,18 * * * À 8h, 12h et 18h chaque jour
0 9-17 * * 1-5 De 9h à 17h, du lundi au vendredi

⚙️ Créer une Tâche CRON sur cPanel

Étape 1 : Accéder aux tâches CRON

  1. Connectez-vous à cPanel
  2. Dans la section Avancé (Advanced), cliquez sur Tâches Cron (Cron Jobs)

Image

Étape 2 : Configurer les notifications email

Avant de créer des tâches, configurez l'adresse email pour recevoir les résultats :

  1. Dans la section Email Cron, entrez votre adresse email
  2. Cliquez sur Mettre à jour l'email (Update Email)
    Image

💡 Astuce : Pour désactiver les notifications d'une tâche spécifique, ajoutez >/dev/null 2>&1 à la fin de la commande.


Étape 3 : Ajouter une nouvelle tâche CRON

  1. Descendez jusqu'à la section Ajouter une nouvelle tâche Cron
  2. Paramètres courants : Utilisez le menu déroulant pour sélectionner un intervalle prédéfini
Option Expression générée
Une fois par minute * * * * *
Une fois toutes les 5 minutes */5 * * * *
Deux fois par heure 0,30 * * * *
Une fois par heure 0 * * * *
Deux fois par jour 0 0,12 * * *
Une fois par jour 0 0 * * *
Une fois par semaine 0 0 * * 0
Une fois par mois 0 0 1 * *

Étape 4 : Personnaliser l'intervalle (optionnel)

Si les options prédéfinies ne conviennent pas, remplissez manuellement les champs :

  • Minute : 0-59 ou *
  • Heure : 0-23 ou *
  • Jour : 1-31 ou *
  • Mois : 1-12 ou *
  • Jour de la semaine : 0-7 ou *

Étape 5 : Entrer la commande

Dans le champ Commande, entrez la commande complète avec le chemin absolu.

Exemples de commandes :

# Exécuter un script PHP
/usr/local/bin/php /home/username/public_html/script.php

# Exécuter avec wget (appeler une URL)
/usr/bin/wget -q -O /dev/null https://monsite.com/cron.php

# Exécuter avec curl
/usr/bin/curl -s https://monsite.com/cron.php > /dev/null 2>&1

# Supprimer des fichiers de plus de 7 jours
/usr/bin/find /home/username/public_html/tmp -type f -mtime +7 -delete

Étape 6 : Sauvegarder

Cliquez sur Ajouter une nouvelle tâche Cron (Add New Cron Job)

La tâche apparaît dans la liste Tâches Cron actuelles (Current Cron Jobs).


📝 Commandes CRON Courantes

Exécuter un script PHP

/usr/local/bin/php /home/username/public_html/mon-script.php

💡 Le chemin vers PHP peut varier. Chemins courants :

  • /usr/local/bin/php
  • /usr/bin/php
  • /usr/local/bin/ea-php81 (pour une version spécifique)

Appeler une URL avec wget

/usr/bin/wget -q -O /dev/null https://monsite.com/cron.php
Option Signification
-q Mode silencieux (quiet)
-O /dev/null Ne pas sauvegarder la sortie

Appeler une URL avec curl

/usr/bin/curl -s https://monsite.com/cron.php > /dev/null 2>&1
Option Signification
-s Mode silencieux
> /dev/null 2>&1 Rediriger toute sortie vers null

Supprimer des fichiers temporaires

# Supprimer les fichiers .tmp de plus de 24h
/usr/bin/find /home/username/public_html/cache -name "*.tmp" -mtime +1 -delete

# Supprimer les fichiers de plus de 7 jours dans un dossier
/usr/bin/find /home/username/logs -type f -mtime +7 -delete

Sauvegarder une base de données

/usr/bin/mysqldump -u db_user -p'mot_de_passe' db_name > /home/username/backups/backup_$(date +\%Y\%m\%d).sql

⚠️ Sécurité : Évitez de stocker les mots de passe en clair. Utilisez un fichier .my.cnf sécurisé.


Compresser des fichiers

/usr/bin/tar -czf /home/username/backups/site_$(date +\%Y\%m\%d).tar.gz /home/username/public_html

🔵 Tâches CRON pour WordPress

Problème avec WP-Cron

WordPress utilise un système de "pseudo-cron" appelé WP-Cron qui s'exécute à chaque chargement de page. Sur les sites à faible trafic, les tâches planifiées peuvent être retardées.

Solution : Désactiver WP-Cron et utiliser un vrai CRON système.


Étape 1 : Désactiver WP-Cron

Éditez le fichier wp-config.php et ajoutez cette ligne avant /* That's all, stop editing! */ :

define('DISABLE_WP_CRON', true);

Étape 2 : Créer une tâche CRON système

Option A : Avec wget

/usr/bin/wget -q -O /dev/null https://monsite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Option B : Avec curl

/usr/bin/curl -s https://monsite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Option C : Avec PHP directement

/usr/local/bin/php /home/username/public_html/wp-cron.php > /dev/null 2>&1

Fréquence recommandée pour WordPress

Type de site Fréquence
Blog personnel Toutes les heures (0 * * * *)
Site vitrine Toutes les 30 minutes (*/30 * * * *)
E-commerce WooCommerce Toutes les 15 minutes (*/15 * * * *)
Site à fort trafic Toutes les 5 minutes (*/5 * * * *)

Configuration complète WordPress

Intervalle Commande
*/15 * * * * /usr/bin/wget -q -O /dev/null https://monsite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

📋 Exemples Pratiques

Exemple 1 : Sauvegarde quotidienne à 3h du matin

Champ Valeur
Minute 0
Heure 3
Jour *
Mois *
Jour semaine *
Commande /usr/local/bin/php /home/username/public_html/backup.php > /dev/null 2>&1

Expression complète : 0 3 * * *


Exemple 2 : Nettoyage du cache toutes les 6 heures

Champ Valeur
Minute 0
Heure */6
Jour *
Mois *
Jour semaine *
Commande /usr/local/bin/php /home/username/public_html/clear_cache.php

Expression complète : 0 */6 * * *


Exemple 3 : Rapport hebdomadaire le lundi à 9h

Champ Valeur
Minute 0
Heure 9
Jour *
Mois *
Jour semaine 1
Commande /usr/local/bin/php /home/username/public_html/weekly_report.php

Expression complète : 0 9 * * 1


Exemple 4 : Mise à jour des prix toutes les heures (e-commerce)

Champ Valeur
Minute 0
Heure *
Jour *
Mois *
Jour semaine *
Commande /usr/bin/curl -s https://monsite.com/update-prices.php > /dev/null 2>&1

Expression complète : 0 * * * *


Exemple 5 : Suppression des sessions expirées quotidienne

Champ Valeur
Minute 30
Heure 2
Jour *
Mois *
Jour semaine *
Commande /usr/bin/find /home/username/tmp/sessions -type f -mtime +1 -delete

Expression complète : 30 2 * * *


✏️ Modifier ou Supprimer une Tâche CRON

Modifier une tâche

  1. Dans la section Tâches Cron actuelles, trouvez la tâche à modifier
  2. Cliquez sur Modifier (Edit)
  3. Effectuez vos modifications
  4. Cliquez sur Modifier la ligne (Edit Line)

Supprimer une tâche

  1. Dans la section Tâches Cron actuelles, trouvez la tâche à supprimer
  2. Cliquez sur Supprimer (Delete)
  3. Confirmez la suppression

🔧 Dépannage

La tâche CRON ne s'exécute pas

❌ Cause possible ✅ Solution
Chemin incorrect vers PHP Vérifiez avec which php en SSH
Chemin incorrect vers le script Utilisez le chemin absolu complet
Permissions insuffisantes Vérifiez les permissions du script (755)
Erreur de syntaxe dans le script Testez le script manuellement
Expression CRON incorrecte Vérifiez sur crontab.guru

Trouver le chemin vers PHP

Connectez-vous en SSH et exécutez :

which php

Résultat typique : /usr/local/bin/php

Pour une version spécifique :

which ea-php81

Tester une commande manuellement

Avant de créer la tâche CRON, testez la commande en SSH :

/usr/local/bin/php /home/username/public_html/mon-script.php

Si le script fonctionne manuellement, il devrait fonctionner en CRON.


Recevoir des notifications d'erreur

Pour déboguer, supprimez temporairement > /dev/null 2>&1 de la commande.

Vous recevrez alors les erreurs par email.


Erreurs courantes

"No such file or directory"

/bin/sh: /home/username/public_html/script.php: No such file or directory

Solution : Vérifiez que le chemin est correct et que le fichier existe.


"Permission denied"

/bin/sh: /home/username/public_html/script.php: Permission denied

Solution : Rendez le script exécutable :

chmod 755 /home/username/public_html/script.php

Ou utilisez l'interpréteur PHP explicitement :

/usr/local/bin/php /home/username/public_html/script.php

"Command not found"

/bin/sh: php: command not found

Solution : Utilisez le chemin complet vers PHP (/usr/local/bin/php).


Vérifier les logs CRON

Les logs CRON sont généralement dans /var/log/cron (accès root requis).

Sur hébergement mutualisé, utilisez les notifications email pour déboguer.


⚠️ Bonnes Pratiques

Fréquence des tâches

⚠️ À éviter ✅ Recommandé
* * * * * (chaque minute) sans raison Minimum 5-15 minutes entre les exécutions
Plusieurs tâches lourdes à la même heure Échelonner les tâches dans le temps
Tâches inutiles Supprimer les tâches obsolètes

⚠️ Hébergement mutualisé : La plupart des hébergeurs limitent les CRON à un minimum de 5-15 minutes.


Sécurité

Pratique Recommandation
Mots de passe Ne pas inclure en clair dans les commandes
Scripts sensibles Placer hors de public_html
Logs Surveiller régulièrement les exécutions
Permissions Limiter les permissions des scripts

Optimisation

# Bonne pratique : utiliser nice pour limiter la priorité
nice -n 15 /usr/local/bin/php /home/username/public_html/script.php

# Bonne pratique : rediriger la sortie pour éviter les emails
/usr/local/bin/php /home/username/script.php > /dev/null 2>&1

# Bonne pratique : logger dans un fichier pour le débogage
/usr/local/bin/php /home/username/script.php >> /home/username/logs/cron.log 2>&1

📊 Outils Utiles

Générateurs d'expressions CRON

Outil URL
Crontab Guru crontab.guru
Cron Maker cronmaker.com
Crontab Generator crontab-generator.org

Tester une expression CRON

Sur crontab.guru, entrez votre expression pour voir quand elle s'exécutera :

*/15 * * * *

Résultat : "At every 15th minute" Prochaines exécutions : 00:00, 00:15, 00:30, 00:45, 01:00...


📝 Récapitulatif

CONFIGURER UNE TÂCHE CRON :

1. cPanel → Avancé → Tâches Cron
2. Configurer l'email de notification (optionnel)
3. Sélectionner l'intervalle (menu déroulant ou personnalisé)
4. Entrer la commande avec chemin absolu
5. Cliquer sur "Ajouter une nouvelle tâche Cron"

SYNTAXE CRON :
┌─────────── Minute (0-59)
│ ┌───────── Heure (0-23)
│ │ ┌─────── Jour du mois (1-31)
│ │ │ ┌───── Mois (1-12)
│ │ │ │ ┌─── Jour de la semaine (0-7)
│ │ │ │ │
* * * * *  commande

INTERVALLES COURANTS :
├── */5 * * * *    → Toutes les 5 minutes
├── 0 * * * *      → Toutes les heures
├── 0 0 * * *      → Chaque jour à minuit
├── 0 0 * * 0      → Chaque dimanche à minuit
└── 0 0 1 * *      → Le 1er de chaque mois

COMMANDES TYPES :
├── PHP : /usr/local/bin/php /chemin/script.php
├── wget : /usr/bin/wget -q -O /dev/null https://url
├── curl : /usr/bin/curl -s https://url > /dev/null 2>&1
└── find : /usr/bin/find /chemin -mtime +7 -delete

WORDPRESS WP-CRON :
1. Ajouter dans wp-config.php : define('DISABLE_WP_CRON', true);
2. Créer CRON : */15 * * * * wget -q -O /dev/null https://site.com/wp-cron.php?doing_wp_cron

DÉSACTIVER NOTIFICATIONS :
Ajouter à la fin de la commande : > /dev/null 2>&1