Créer un Cron Job Personnalisé sur Linux

L’automatisation des tâches routinières est essentielle dans toute administration système ou flux de travail de développement web robuste. Les cron jobs fournissent un planificateur de tâches puissant basé sur le temps dans les systèmes d’exploitation de type Unix, vous permettant d’exécuter des scripts ou des commandes automatiquement à des intervalles programmés.

 Qu’est-ce qu’un Cron Job ?

Un cron job est une tâche planifiée définie dans le crontab du système (tableau cron) qui exécute des commandes ou des scripts à des moments ou intervalles spécifiés. Cron est largement utilisé car il est :

  • Léger

  • Hautement personnalisable

  • Intégré dans la plupart des distributions Linux

 Cas d’utilisation courants

  • Sauvegardes de base de données quotidiennes ou hebdomadaires

  • Exécution de scripts PHP/Python

  • Rotation des journaux et nettoyage des fichiers temporaires

  • Envoi d’e-mails programmés

  • Mise à jour des caches de données ou synchronisation des fichiers

Étape 1 : Accéder au Crontab

Pour éditer le crontab de votre utilisateur (sans accès root) :

crontab -e
Pour éditer le crontab root (nécessite sudo) :
sudo crontab -e

Étape 2 : Décomposition de la syntaxe Cron

Chaque cron job utilise le format suivant :

* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └──── Day of the week (0-7, Sunday = 0 or 7)
│ │ │ └────── Month (1–12)
│ │ └──────── Day of the month (1–31)
│ └────────── Hour (0–23)
└──────────── Minute (0–59)

 Exemple : Exécuter un script tous les jours à 2h du matin

0 2 * * * /home/user/scripts/backup.sh

Étape 3 : Créer un script personnalisé

Disons que vous souhaitez exécuter un script Python personnalisé. Tout d’abord, créez le fichier :

nano /home/user/scripts/cleanup.py

Script d’exemple :

#!/usr/bin/env python3
import os
import datetime
log_dir = "/var/log/myapp"
threshold = 7 # days
now = datetime.datetime.now()
for filename in os.listdir(log_dir):
filepath = os.path.join(log_dir, filename)
if os.path.isfile(filepath):
file_age = now - datetime.datetime.fromtimestamp(os.path.getmtime(filepath))
if file_age.days > threshold:
os.remove(filepath)

Rendez le script exécutable :

chmod +x /home/user/scripts/cleanup.py

 Étape 4 : Ajouter le Cron Job

Éditez votre crontab et ajoutez :

0 1 * * * /home/user/scripts/cleanup.py >> /var/log/cleanup.log 2>&1

Ceci :

  • Exécute le script quotidiennement à 1h00

  • Enregistre la sortie dans /var/log/cleanup.log

 Exemples de cas d’utilisation

✅ Exécuter toutes les 10 minutes

*/10 * * * * /home/user/check_status.sh

✅ Exécuter uniquement les lundis à 3h du matin

0 3 * * 1 /home/user/scripts/weekly_report.sh

 Désactiver ou supprimer un Cron Job

Désactivez temporairement une ligne en la commentant avec #.

Pour supprimer tous les jobs :

crontab -r

Les cron jobs personnalisés sont un outil puissant pour l’automatisation, la maintenance et la fiabilité. Que vous gériez un VPS personnel, déployiez des scripts backend ou exécutiez des charges de travail en production, maîtriser cron vous permet de contrôler quand et comment les tâches s’exécutent — sans effort.