Planifier des tâches avec cron

3 min de lecture07 novembre 2026

Cron exécute une commande à intervalle régulier : sauvegarde, renouvellement de certificat, nettoyage. C'est un outil ancien mais toujours présent, simple à auditer et suffisant pour la plupart des tâches d'un VPS. Une crontab mal écrite échoue silencieusement, d'où l'importance des chemins absolus et des journaux.

Comprendre la syntaxe

crontab -e ouvre la crontab de l'utilisateur courant. Chaque ligne active contient cinq champs puis la commande :

Texte
minute heure jour-du-mois mois jour-de-semaine commande

Les minutes et les heures vont de 0 à 59 et de 0 à 23. * signifie « chaque », */15 « toutes les quinze unités », 1-5 une plage et 1,15 une liste. Exemple quotidien à 03h15 :

Texte
15 3 * * * /usr/local/bin/sauvegarde.sh

Si le jour du mois et le jour de la semaine sont tous deux restreints, cron exécute la tâche si l'un des deux correspond. Utilisez @daily, @weekly ou @reboot pour les cas simples. crontab -l affiche la crontab ; crontab -r la supprime sans confirmation, exportez-la avant.

Écrire une tâche fiable

Cron démarre avec un environnement minimal : PATH est réduit et le répertoire courant est le home. Écrivez des chemins absolus et fixez l'environnement en tête de crontab :

Texte
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
15 3 * * * flock -n /run/sauvegarde.lock /usr/local/bin/sauvegarde.sh >> /var/log/sauvegarde.log 2>&1
  • flock -n empêche deux exécutions simultanées si la précédente dure.
  • >> ... 2>&1 conserve la sortie standard et les erreurs ; sans redirection, cron tente d'envoyer un e-mail et échoue souvent faute de serveur mail.
  • Le script doit avoir un shebang et être exécutable (chmod 755).
  • Testez-le avec l'utilisateur qui exécute la crontab, pas avec root par confort.

Les fichiers de /etc/cron.d/ ajoutent un champ utilisateur avant la commande. Les crontabs utilisateur n'en ont pas.

Vérifier l'exécution

Bash
systemctl status cron
journalctl -u cron --since today
tail -n 20 /var/log/sauvegarde.log

Pour valider une planification, utilisez temporairement * * * * *, attendez une minute, puis remettez l'horaire réel. Vérifiez le fuseau avec timedatectl : cron suit l'heure système, et un changement d'heure peut décaler ou répéter une tâche.

Cron ou timer systemd ?

Critère cron Timer systemd
Simplicité Très simple Unité à écrire
Exécution manquée Perdue Persistent=true la rejoue
Journaux Redirection manuelle journalctl -u
Dépendances Aucune After=, Requires=
Précision Minute Seconde

Un timer convient aux tâches qui doivent survivre à un arrêt ou dépendre d'un autre service. Cron reste adapté aux scripts courts et autonomes.

Vérifier le résultat

Contrôlez que la tâche s'exécute à l'heure prévue, que le fichier de sortie grandit et que le code de retour est zéro. Ajoutez une surveillance simple : si la sauvegarde n'écrit plus depuis deux jours, quelque chose est cassé. Une tâche planifiée non supervisée finit toujours par échouer sans que personne ne le remarque.

Publicité

Cet article vous a-t-il aidé ?

À lire aussi