Cet article suit les pages de manuel de Debian 13 pour crontab(5), le format des lignes, et crontab(1), la commande, ainsi que la page crontab(5) d'Ubuntu, relues le 14 octobre 2026.
Les cinq champs
| Champ | Valeurs |
|---|---|
| minute | 0 à 59 |
| heure | 0 à 23 |
| jour du mois | 1 à 31 |
| mois | 1 à 12, ou jan, feb… |
| jour de la semaine | 0 à 7 (0 et 7 valent dimanche), ou mon, tue… |
Dans chaque champ :
*veut dire « toutes les valeurs ».1-5est un intervalle, bornes comprises : du lundi au vendredi dans le dernier champ.1,15est une liste : le 1er et le 15 dans le champ du jour du mois.*/15est un pas : toutes les 15 minutes dans le premier champ.
Quelques lignes types :
*/15 * * * * toutes les 15 minutes
0 * * * * chaque heure, à l'heure pile
30 3 * * * chaque jour à 3 h 30
0 8 * * 1-5 du lundi au vendredi à 8 h
0 2 1 * * le 1er de chaque mois à 2 h
Des raccourcis remplacent les cinq champs : @hourly, @daily, @weekly, @monthly, @yearly, et @reboot, qui lance la commande une fois au démarrage de cron.
0 4 1 * 5 tourne le 1er du mois, et aussi chaque vendredi.Ajouter une tâche
- Écrivez d'abord la commande et lancez-la à la main, pour vérifier qu'elle fonctionne.
- Ouvrez votre crontab avec
crontab -e. Au premier lancement, la commande peut vous demander de choisir un éditeur : nano est le plus simple. - Ajoutez votre ligne à la fin du fichier, en écrivant les chemins complets :
30 3 * * * /home/admin/sauvegarde.sh >> /home/admin/sauvegarde.log 2>&1
- Enregistrez et quittez. La crontab est installée à la fermeture de l'éditeur, sans redémarrer quoi que ce soit.
- Vérifiez avec
crontab -l.
La fin de la ligne, >> fichier.log 2>&1, ajoute la sortie normale et les erreurs à un fichier. Sans elle, cron essaie d'envoyer le résultat par courrier au propriétaire de la crontab, ce qui ne mène nulle part sur un serveur sans messagerie configurée, et vous ne saurez jamais pourquoi une tâche a échoué.
Les pièges courants
- L'environnement n'est pas celui de votre session. Cron lance la commande avec
/bin/sh(ou/usr/bin/sh), dans un environnement réduit. Une commande qui marche dans votre terminal peut échouer faute de trouver un programme : écrivez les chemins complets (/usr/bin/dockerplutôt quedocker), ou posez une lignePATH=en tête de la crontab. - Le signe `%` coupe la commande. Cron le remplace par un retour à la ligne. Écrivez
date +\%Favec une barre oblique inversée, ou placez la commande dans un script. - La dernière ligne doit finir par un retour à la ligne. Sans lui,
crontab -epeut refuser d'installer le fichier, ou cron ignorer la ligne et le signaler dans le journal système. - L'heure est celle du serveur.
timedatectlaffiche son fuseau horaire ; beaucoup de serveurs tournent en UTC. - `crontab -r` supprime toute la crontab sans rien demander. Préférez
crontab -i -r, qui demande confirmation, ou gardez une copie aveccrontab -l > crontab.bak.
Savoir si la tâche a tourné
Le service cron note chaque lancement dans le journal du système. Sur Ubuntu et Debian :
journalctl -u cron --since today
Pour le résultat de la commande elle-même, lisez le fichier vers lequel vous avez dirigé sa sortie.
Exemple : une sauvegarde de conteneur
Sur un serveur Docker, une tâche cron peut exporter chaque nuit la base d'une application. Avec un service PostgreSQL nommé base dans un projet Compose rangé dans /srv/app :
15 2 * * * cd /srv/app && /usr/bin/docker compose exec -T base pg_dumpall -U postgres > /srv/sauvegardes/base.sql 2>> /srv/sauvegardes/erreurs.log
L'option -T évite à Compose de demander un terminal, que cron n'a pas. Le fonctionnement de Compose est détaillé dans Docker Compose : décrire et lancer vos conteneurs.
Sur un VPS Hubspace
Si la commande crontab est introuvable, installez cron avec sudo apt install cron. Le compte admin peut lancer Docker sans sudo : une tâche de sa crontab peut donc piloter vos conteneurs. Le disque principal du serveur est déjà sauvegardé chaque jour, avec sept sauvegardes gardées, mais pas le disque supplémentaire monté sur /mnt/data ; une exportation de base par cron reste utile pour récupérer une seule application, ou garder une copie ailleurs. Pour les autres commandes, voir Les commandes Linux à connaître.
Questions fréquentes
Comment lancer une tâche toutes les 30 secondes ?
Cron ne descend pas sous la minute. Pour un intervalle plus court, il faut un programme qui tourne en continu, ou un minuteur systemd.
Où sont les tâches du système ?
Dans /etc/crontab et le dossier /etc/cron.d/. Leurs lignes portent un champ supplémentaire, le nom du compte qui lance la commande, entre les cinq champs de temps et la commande.
Faut-il mettre sudo dans une ligne cron ?
Non. Une tâche qui a besoin des droits d'administrateur se place dans la crontab de root, avec sudo crontab -e.
Articles liés
- Commandes Linux : les essentielles à connaîtreLes commandes Linux à connaître pour gérer un serveur : fichiers et dossiers, recherche, espace disque, services, journaux et droits, avec leurs options utiles.
- Mettre à jour Ubuntu ou Debian sur un serveurMettre à jour Ubuntu ou Debian : apt update et apt upgrade, mises à jour automatiques de sécurité, redémarrage nécessaire et passage à une nouvelle version.
- Espace disque Linux : le voir et le libérerDisque plein sous Linux : repérer ce qui occupe la place avec df et du, puis libérer de l'espace sans casse, journaux, paquets et images Docker compris.