Si vous gérez un site web, une application ou même un simple serveur, vous avez sûrement déjà rêvé que certaines tâches puissent se faire toutes seules. Sauvegarder vos bases de données, envoyer des emails automatiques, nettoyer des fichiers temporaires, mettre à jour vos scripts… Tout cela prend du temps et nécessite parfois d’intervenir manuellement. Heureusement, il existe un outil puissant présent dans la majorité des systèmes Linux et Unix (macOS) : le Cron job.
À travers ce tutoriel, nous allons explorer ensemble le monde des Cron jobs. Nous verrons ce que c’est, à quoi ça sert, comment en créer un, et nous étudierons plusieurs cas concrets. Puis, nous irons plus loin avec CronMaster, une solution moderne et centralisée qui facilite la gestion de vos Cron jobs, notamment si vous travaillez avec plusieurs serveurs ou projets.
L’objectif est de vous donner toutes les clés, même si vous n’avez jamais entendu parler de Cron auparavant.
- Qu’est-ce qu’un Cron job ?
- À quoi sert un Cron job ?
- Exemples de Cron jobs concrets
- Comment créer un Cron job ?
- Cas concret : Sauvegarde automatique d’une base de données
- Cas concret : Envoi automatique d’un rapport hebdomadaire par email
- Idées utiles de Cron job
- Qu’est-ce que CronMaster ?
- Pourquoi utiliser CronMaster ?
- Comment installer CronMaster ?
- Comment utiliser CronMaster ?
- Vérification d’un site en Cron job (ping)
- Suivi de prix (alerte si un produit baisse)
Qu’est-ce qu’un Cron job ?
Le mot Cron vient du grec « Chronos », qui signifie le temps. Il s’agit d’un utilitaire de planification intégré dans les systèmes de type Unix (macOS) et Linux. Concrètement, un Cron job est une tâche planifiée qui s’exécute automatiquement à intervalles réguliers, définis par l’utilisateur.
Vous pouvez donc programmer votre serveur pour exécuter une commande ou un script toutes les heures, tous les jours, une fois par semaine ou encore une fois par mois, sans avoir à intervenir.
Par exemple, vous pouvez demander à votre serveur :
- d’envoyer un email automatique tous les lundis matin à 9h,
- de sauvegarder votre base de données MySQL tous les soirs à minuit,
- de vider le cache de votre site toutes les 24 heures,
- ou encore de mettre à jour vos statistiques chaque heure.
Le Cron est donc un agenda automatisé pour votre serveur. Une fois que vous avez défini les règles, il s’occupe du reste, sans jamais oublier, sans retard, et sans fatigue.
À quoi sert un Cron job ?
Un Cron job est utilisé pour automatiser les actions répétitives. Cela permet de gagner du temps, d’éviter les oublis et d’assurer la régularité des opérations.
Imaginons que vous gériez un site de e-commerce. Chaque jour, vous devez générer un rapport des ventes et l’envoyer par email à votre équipe. Si vous le faites manuellement, cela devient vite contraignant, et le risque d’oubli est grand. En programmant un Cron job, votre serveur se chargera de générer et d’envoyer le rapport automatiquement, à heure fixe, sans que vous n’ayez rien à faire.
De manière générale, un Cron job peut servir à :
- Sauvegarder des données : bases de données, fichiers utilisateurs, logs système.
- Envoyer des emails automatiques : newsletters, notifications, rapports, rappels.
- Nettoyer un système : suppression de fichiers temporaires, rotation des logs, suppression de caches.
- Synchroniser des données : mise à jour de sites miroirs, réplication de bases de données.
- Lancer des scripts : calculs de statistiques, importation de fichiers, exécution de traitements réguliers.
En d’autres termes, un Cron job est l’assistant idéal pour tout administrateur système, développeur ou propriétaire de site web.
Exemples de Cron jobs concrets
Pour mieux comprendre, voyons plusieurs exemples concrets de taches Cron que vous pourriez utiliser.
Exemple 1 : Sauvegarde automatique d’une base de données MySQL
Imaginons que vous souhaitez sauvegarder chaque nuit la base de données de votre site web. Vous pouvez écrire un petit script shell qui exécute la commande mysqldump
, puis planifier ce script grâce à Cron.
0 2 * * * mysqldump -u utilisateur -p MotDePasse base_de_donnees > /backup/db_backup.sql
Cette ligne signifie : « Exécute la commande chaque jour à 2h du matin ». Votre base sera ainsi sauvegardée automatiquement sans intervention de votre part.
Exemple 2 : Nettoyage des fichiers temporaires
Sur un serveur, il arrive souvent que des fichiers temporaires s’accumulent et prennent de la place inutilement. Avec un Cron job, vous pouvez programmer une suppression automatique.
0 3 * * 0 rm -rf /tmp/*
Cette ligne signifie : « Tous les dimanches à 3h du matin, supprime tout le contenu du dossier /tmp ».
Exemple 3 : Mise à jour des statistiques toutes les heures
Vous avez un site qui affiche des statistiques issues d’un calcul complexe. Plutôt que de les recalculer à chaque visite, vous pouvez générer ces statistiques en arrière-plan toutes les heures avec un Cron job.
0 * * * * /usr/bin/php /var/www/html/stats.php
Ici, la commande lance un script PHP toutes les heures à la minute zéro. Votre site n’aura plus qu’à afficher les données déjà calculées.
Exemple 4 : Envoi automatique d’une newsletter hebdomadaire
Vous pouvez utiliser un Cron job pour déclencher l’envoi d’une newsletter chaque lundi à 8h du matin.
0 8 * * 1 /usr/bin/php /var/www/html/send_newsletter.php
Votre script d’envoi est exécuté sans que vous ayez besoin d’appuyer sur un bouton.
Exemple 5 : Vérification de l’espace disque
Il est aussi possible d’utiliser un Cron job pour surveiller l’espace disque de votre serveur. Un script peut vérifier le pourcentage d’utilisation, et envoyer un email si le seuil est dépassé.
*/30 * * * * /usr/bin/php /var/www/html/check_disk.php
Cette ligne exécute le script toutes les 30 minutes. Vous êtes ainsi alerté rapidement en cas de problème.
Ces exemples montrent à quel point un Cron job peut simplifier la vie. Il permet d’automatiser presque tout ce qui peut être exécuté en ligne de commande ou via un script.
Comment créer un Cron job ?
Maintenant que vous savez ce qu’est un Cron job et que vous avez vu plusieurs exemples, passons à la pratique. Créer un Cron job peut sembler intimidant au départ, mais en réalité, c’est une opération simple une fois que l’on a compris la syntaxe.
Le fichier Crontab
La plupart des Cron jobs sont définis dans un fichier appelé crontab (abréviation de « cron table »). Ce fichier contient une liste de règles que le service Cron va lire et exécuter.
Chaque utilisateur d’un système Linux peut avoir son propre fichier crontab. Cela signifie que vous pouvez programmer vos propres tâches sans impacter celles d’un autre utilisateur.
Pour accéder à votre crontab, vous utilisez la commande suivante dans votre terminal :
crontab -e
Cette commande ouvre le fichier crontab de votre utilisateur dans un éditeur de texte (souvent nano ou vim, selon votre système). Vous pouvez alors ajouter vos lignes de Cron job.
Pour voir la liste des tâches déjà programmées, utilisez :
crontab -l
Pour supprimer toutes vos tâches :
crontab -r
La syntaxe d’un Cron job
Un Cron job suit toujours la même structure. Voici la syntaxe de base :
* * * * * commande à exécuter
Les cinq astérisques correspondent à des paramètres de temps :
- Minute (0 à 59)
- Heure (0 à 23)
- Jour du mois (1 à 31)
- Mois (1 à 12)
- Jour de la semaine (0 à 7, où 0 et 7 correspondent au dimanche)
Par exemple :
0 2 * * *
→ tous les jours à 2h du matin30 8 * * 1
→ chaque lundi à 8h30*/15 * * * *
→ toutes les 15 minutes0 0 1 * *
→ le premier jour de chaque mois à minuit
Ensuite, vous ajoutez la commande à exécuter.
Bonnes pratiques pour créer un Cron job
- Toujours donner le chemin complet vers vos programmes (par exemple
/usr/bin/php
plutôt quephp
). - Vérifier que vos scripts fonctionnent correctement en les lançant manuellement avant de les automatiser.
- Rediriger la sortie de vos commandes vers un fichier log pour déboguer en cas de problème :
0 2 * * * /usr/bin/php /var/www/html/script.php >> /var/log/cron.log 2>&1
Ainsi, vous pourrez consulter le fichier /var/log/cron.log
pour voir ce qui s’est passé.
Cas concret : Sauvegarde automatique d’une base de données
Imaginons que vous gérez un site avec une base MySQL. Vous souhaitez sauvegarder cette base tous les jours à minuit, afin de ne jamais perdre vos données. Voici comment faire pas à pas.
Étape 1 : Créer un script de sauvegarde
Commencez par créer un fichier que nous appellerons backup_db.sh
:
#!/bin/bash
DATE=$(date +%F)
mysqldump -u root -pVotreMotDePasse ma_base > /home/utilisateur/backup/db_$DATE.sql
Ce script génère un fichier SQL nommé avec la date du jour (par exemple db_2025-09-10.sql
).
N’oubliez pas de donner les droits d’exécution au script :
chmod +x backup_db.sh
Étape 2 : Programmer le script avec Cron
Éditez votre crontab :
crontab -e
Ajoutez la ligne suivante :
0 0 * * * /home/utilisateur/backup_db.sh >> /home/utilisateur/backup/backup.log 2>&1
Cette commande lancera le script chaque jour à minuit et enregistrera le résultat dans un fichier backup.log
.

Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?Résultat : votre base sera sauvegardée automatiquement chaque nuit sans aucune intervention.
Cas concret : Envoi automatique d’un rapport hebdomadaire par email
Supposons maintenant que vous voulez envoyer un rapport de vos ventes chaque lundi matin à votre équipe.
Étape 1 : Créer le script PHP d’envoi
Dans le fichier rapport.php
:
<?php
$rapport = "Voici le rapport hebdomadaire des ventes.\n";
// Ici vous ajouteriez la génération réelle du rapport depuis votre base
mail("[email protected]", "Rapport hebdomadaire", $rapport);
?>
Ce petit script envoie un email à votre équipe.
Étape 2 : Créer un Cron job
Éditez la crontab :
crontab -e
Ajoutez la ligne suivante :
0 9 * * 1 /usr/bin/php /var/www/html/rapport.php >> /var/log/rapport.log 2>&1
Cette ligne exécute le script chaque lundi à 9h du matin et enregistre les erreurs éventuelles dans un fichier rapport.log
.
Résultat : votre équipe recevra automatiquement un rapport hebdomadaire sans que vous n’ayez besoin d’intervenir.
Que signifie 2>&1 a la fon d’un cron job ?
2>&1
est une redirection de flux. Pour bien comprendre, on doit rappeler que dans Linux ou Unix, chaque processus a trois flux principaux :
- stdout (1) → la sortie standard (ce que le programme affiche normalement)
- stderr (2) → la sortie d’erreurs (les messages d’erreur)
- stdin (0) → l’entrée standard (d’où le programme lit ses données)
Ce que fait 2>&1
2
→ représente stderr (les erreurs)>
→ signifie rediriger&1
→ signifie vers la même destination que stdout
En gros :
“Prends toutes les erreurs (stderr) et envoie-les vers la même sortie que les messages normaux (stdout).”
Exemple dans un cron job
* * * * * /home/user/monscript.sh >> /home/user/log.txt 2>&1
>> /home/user/log.txt
→ ajoute la sortie standard (stdout) àlog.txt
2>&1
→ ajoute aussi toutes les erreurs (stderr) dans le même fichier- Résultat : stdout et stderr sont dans le même fichier, pratique pour debug.
Sans
2>&1
, les erreurs ne seraient pas dans le log, elles seraient envoyées par défaut à l’email de l’utilisateur qui exécute le cron.
Idées utiles de Cron job
- Sauvegarde automatique : créer une archive
.tar.gz
de votre site ou projet chaque nuit. - Nettoyage des logs : supprimer les fichiers journaux vieux de plus de 30 jours.
- Optimisation base de données : lancer un
mysqldump
+ optimisation des tables MySQL chaque semaine (comme vu précédemment). - Synchronisation fichiers : copier certains dossiers vers un disque externe ou cloud.
- Rapport système par mail : envoi quotidien de l’état du serveur (CPU, RAM, espace disque).
- Mise à jour automatique : exécuter un
apt update && apt upgrade -y
chaque semaine (serveur Linux). - Purge corbeille / cache : vider régulièrement le cache système ou la corbeille.
- Déplacement de fichiers : organiser automatiquement les fichiers téléchargés (exemple : déplacer tous les
.jpg
vers un dossier Images). - Vérification d’un site : ping automatique de votre site web pour vérifier qu’il est toujours en ligne (voir ci-dessous).
- Backup Git : pousser automatiquement votre projet vers un dépôt Git distant chaque soir.
- Notification météo : recevoir chaque matin la météo du jour par email ou sur votre terminal.
- Compteur personnel : incrémenter un petit fichier texte pour compter les jours depuis un événement (ex. arrêt clope, projet #100JoursPourCoder, etc.).
- Mot du jour : apprendre un mot en anglais ou une définition chaque matin (via une API).
- Alarme cachée : lancer une musique à une heure précise
- Photo aléatoire : changer automatiquement votre fond d’écran chaque jour.
- Suivi de prix : vérifier le prix d’un produit en ligne et envoyer une alerte si ça change (voir ci-dessous).
- Minuteur de pause : planifier une alerte pour vous rappeler de faire une pause toutes les X heures quand vous codez.
Qu’est-ce que CronMaster ?
Jusqu’ici, nous avons vu que les Cron jobs sont très puissants pour automatiser des tâches. Cependant, lorsqu’on commence à en avoir beaucoup, ou lorsqu’on gère plusieurs serveurs, la gestion devient vite compliquée. On peut facilement oublier qu’un Cron job existe, ne pas remarquer qu’il échoue, ou perdre le fil de son exécution.
C’est là qu’intervient CronMaster. Il s’agit d’un outil moderne qui permet de centraliser, surveiller et gérer vos Cron jobs à partir d’une interface web conviviale.
En d’autres termes, CronMaster est un tableau de bord pour vos Cron jobs. Au lieu de devoir ouvrir chaque serveur, lire des logs et vérifier si tout fonctionne, vous pouvez visualiser en temps réel l’état de vos tâches, recevoir des alertes en cas de problème, et planifier plus facilement vos automatisations.
Pourquoi utiliser CronMaster ?
Surveillance en temps réel
Avec un simple fichier crontab, si une tâche échoue, vous ne le savez pas toujours. CronMaster vous informe lorsqu’un Cron job ne s’exécute pas correctement ou prend trop de temps.
Centralisation
Si vous gérez plusieurs serveurs ou projets, CronMaster rassemble toutes vos tâches en un seul endroit. Vous n’avez plus besoin de retenir quelle tâche est sur quel serveur.
Interface intuitive
CronMaster propose une interface web claire qui permet de programmer, modifier et suivre vos Cron jobs sans passer uniquement par la ligne de commande.
Alertes et notifications
En cas de problème (par exemple, un Cron job qui n’a pas tourné à l’heure prévue), vous recevez une alerte par email ou via un autre canal configuré.
Historique et logs centralisés
Chaque exécution est enregistrée. Vous pouvez consulter l’historique complet et voir exactement ce qui s’est passé à une date donnée, ce qui facilite énormément le débogage.
Gain de temps et tranquillité
Plutôt que de perdre du temps à vérifier manuellement vos Cron jobs, vous laissez CronMaster le faire pour vous. Vous pouvez vous concentrer sur vos projets sans crainte d’un oubli.
En résumé, CronMaster transforme un outil puissant mais brut (le Cron classique) en un système professionnel, plus sûr et plus facile à gérer.
Comment installer CronMaster ?
Avant de commencer, assurez-vous d’avoir :
- Un serveur Linux (Ubuntu, Debian, CentOS ou autre) ou macOS.
- Un accès SSH au serveur.
- Droits administrateur (root) pour installer des paquets.
- PHP et MySQL/MariaDB installés (car CronMaster s’appuie sur une base de données).
Télécharger CronMaster
Vous pouvez récupérer CronMaster depuis son dépôt officiel. Par exemple :
git clone https://github.com/your-repo/cronmaster.git
cd cronmaster
Configuration de la base de données
Créez une base de données MySQL pour CronMaster :
CREATE DATABASE cronmaster;
CREATE USER 'cronuser'@'localhost' IDENTIFIED BY 'motdepasse';
GRANT ALL PRIVILEGES ON cronmaster.* TO 'cronuser'@'localhost';
FLUSH PRIVILEGES;
Ensuite, importez les tables nécessaires :
mysql -u cronuser -p cronmaster < database.sql
Configurer CronMaster
Éditez le fichier de configuration config.php
et ajoutez vos paramètres :
<?php
return [
'db_host' => 'localhost',
'db_name' => 'cronmaster',
'db_user' => 'cronuser',
'db_pass' => 'motdepasse',
'timezone' => 'Europe/Paris',
];
Lancer l’application
Installez les dépendances PHP (si nécessaire) et configurez votre serveur web (Apache ou Nginx) pour pointer vers le répertoire de CronMaster. Ensuite, accédez à l’URL de votre serveur, par exemple :
http://votre-serveur/cronmaster
Vous devriez voir l’interface de CronMaster.
Comment utiliser CronMaster ?
Ajouter une tâche dans CronMaster
Une fois connecté, vous pouvez ajouter un Cron job depuis l’interface. Contrairement au crontab classique, vous n’avez pas besoin de retenir toute la syntaxe compliquée. Vous remplissez un formulaire :
- Nom de la tâche
- Commande ou script à exécuter
- Fréquence (toutes les heures, tous les jours, chaque semaine, etc.)
- Notifications (voulez-vous recevoir un email en cas d’échec ?)
Une fois enregistré, CronMaster se charge de planifier et de surveiller la tâche.
Suivre l’exécution
Dans le tableau de bord, vous voyez l’historique des exécutions :
- Heure de lancement
- Durée d’exécution
- Succès ou échec
- Messages ou erreurs éventuelles
Surveillance d’un script de sauvegarde (avec CronMaster cette fois)
Vous avez un script backup.sh
qui sauvegarde votre base de données chaque nuit. Vous l’utilisez déjà avec un Cron classique.
L’ajouter dans CronMaster
Dans l’interface de CronMaster, vous créez une nouvelle tâche :
- Nom : Sauvegarde MySQL
- Commande :
/home/utilisateur/backup.sh
- Fréquence : tous les jours à 2h du matin
- Notification : Email en cas d’échec
Suivre l’exécution
Chaque jour, CronMaster enregistre le résultat. Si la sauvegarde échoue (mot de passe incorrect, disque plein…), vous recevez immédiatement une alerte. Vous pouvez ensuite corriger le problème avant qu’il ne devienne critique.
Vérification d’un site en Cron job (ping)
Objectif : s’assurer que votre site est en ligne et recevoir une alerte si ce n’est pas le cas.
Étapes avec CronMaster
- Ouvrir CronMaster et créer une nouvelle tâche.
- Nom de la tâche :
Check site CREA-BLOG
. - Type de tâche : Script ou Commande.
- Commande à exécuter : vous pouvez utiliser
curl
ouping
. Exemple aveccurl
pour votre site :curl -Is https://blog.crea-troyes.fr | head -n 1
-I
: récupère seulement les headers-s
: mode silencieuxhead -n 1
: récupère uniquement la première ligne (ex:HTTP/2 200
)
- Planification : toutes les 5 minutes ou 1 heure selon vos besoin.
- Dans CronMaster, vous pouvez choisir un intervalle régulier (ex:
*/5 * * * *
pour toutes les 5 minutes).
- Dans CronMaster, vous pouvez choisir un intervalle régulier (ex:
- Action en cas d’erreur : vous pouvez paramétrer un email ou une notification si le retour HTTP n’est pas
200
.
Exemple en bash pour envoyer un mail si le site est KO :if ! curl -Is https://code.crea-troyes.fr | head -n 1 | grep "200"; then echo "Le site est indisponible !" | mail -s "Alerte site" [email protected] fi
- Sauvegarde et activation de la tâche.
Votre site sera maintenant vérifié automatiquement selon l’intervalle choisi.
Suivi de prix (alerte si un produit baisse)
Objectif : vérifier automatiquement le prix d’un produit en ligne et vous envoyer une notification si le prix descend en dessous d’un seuil.
Étapes avec CronMaster
- Nouvelle tâche →
Suivi prix casque
. - Type : Script (Python ou Bash, selon ce que tu préfères).
- Script exemple en Python :
import requests
from bs4 import BeautifulSoup
import smtplib
from email.message import EmailMessage
# URL du produit à surveiller
url = "https://www.exemple.com/produit"
# Seuil de prix en euros
prix_seuil = 200.0
# En-têtes HTTP pour éviter d'être bloqué par le site
headers = {"User-Agent": "Mozilla/5.0"}
# Récupération de la page
page = requests.get(url, headers=headers)
# Analyse du contenu HTML
soup = BeautifulSoup(page.content, "html.parser")
# Exemple : le prix est dans un <span> avec id="prix"
prix_str = soup.find("span", {"id": "prix"}).text
# Conversion du prix en float
prix = float(prix_str.replace("€", "").replace(",", "."))
# Vérification si le prix est inférieur au seuil
if prix < prix_seuil:
# Création de l'email
msg = EmailMessage()
msg.set_content(f"Le prix du produit est descendu à {prix}€ !")
msg["Subject"] = "Alerte prix"
msg["From"] = "[email protected]"
msg["To"] = "[email protected]"
# Envoi de l'email via SMTP
with smtplib.SMTP("smtp.gmail.com", 587) as smtp:
smtp.starttls()
smtp.login("[email protected]", "motdepasse_app")
smtp.send_message(msg)
print(f"Alerte envoyée : prix = {prix}€")
else:
print(f"Pas d'alerte : prix actuel = {prix}€")
- Planification : par exemple toutes les 6 heures (
0 */6 * * *
). - Sauvegarder et activer la tâche.
Pour Gmail et autres, vous devez utiliser un mot de passe d’application pour que l’envoi d’email fonctionne.
Nous avons parcouru ensemble tout le chemin, depuis la découverte des Cron jobs jusqu’à la gestion avancée avec CronMaster.
- Vous savez désormais ce qu’est un Cron job, son rôle et ses avantages.
- Vous savez comment en créer un dans un fichier crontab et le personnaliser.
- Vous avez découvert deux cas concrets : la sauvegarde automatique et l’envoi de rapports.
- Vous avez compris ce qu’apporte CronMaster : la centralisation, la surveillance, les alertes et la simplicité.
- Vous savez comment l’installer, le configurer et l’utiliser dans des cas pratiques.
En résumé, un Cron job est l’outil parfait pour automatiser vos tâches, et CronMaster est le compagnon idéal pour gérer ces automatisations avec sérénité et efficacité.