En clair
cron est le réveille-matin des serveurs Linux : une ligne de cinq champs dit à quel moment lancer une commande. La syntaxe est compacte, donc facile à mal lire : 0 0 1 * 1 ne veut pas dire « le premier lundi du mois ». L'outil traduit l'expression en français, montre les prochaines dates réelles et propose l'équivalent moderne avec systemd.
Les cinq champs
┌───────────── minute (0 à 59)
│ ┌─────────── heure (0 à 23)
│ │ ┌───────── jour du mois (1 à 31)
│ │ │ ┌─────── mois (1 à 12, ou jan à dec)
│ │ │ │ ┌───── jour de la semaine (0 à 7, 0 et 7 = dimanche, ou sun à sat)
│ │ │ │ │
30 3 * * 1-5 commande
| Syntaxe | Sens | Exemple |
|---|---|---|
* |
toutes les valeurs | * en heure : chaque heure |
a,b |
liste | 1,15 : le 1er et le 15 |
a-b |
plage | 1-5 : du lundi au vendredi |
*/n |
toutes les n unités | */10 en minute : toutes les 10 minutes |
a-b/n |
toutes les n unités dans la plage | 8-18/2 : 8 h, 10 h… 18 h |
Le piège du jour du mois et du jour de la semaine
Si ces deux champs sont restreints, cron lance la tâche quand l'un ou l'autre correspond. 0 0 1 * 1 s'exécute donc le 1er de chaque mois et chaque lundi. L'outil le signale et adapte l'équivalent systemd en conséquence.
cron ou timer systemd ?
| Critère | cron | Timer systemd |
|---|---|---|
| Simplicité | Une ligne | Deux fichiers (.timer et .service) |
| Exécutions manquées (machine éteinte) | Perdues | Rattrapées avec Persistent=true |
| Journaux | À rediriger soi-même | Dans journalctl -u nom.service |
| Dépendances (réseau, montage) | Aucune | Gérées par systemd |
| Délai aléatoire, pour éviter que toutes les machines tirent en même temps | Non | RandomizedDelaySec= |
Pour une tâche ponctuelle sur un poste, cron suffit. Pour une sauvegarde ou une tâche de serveur, le timer systemd est plus robuste. Vérifiez une expression systemd avec systemd-analyze calendar.
Pour automatiser une sauvegarde, voir Sauvegarder avec restic.