Fondamentaux
Tâches Cron
Cron permet d'exécuter automatiquement des commandes ou scripts à des horaires définis : sauvegardes, mises à jour, rotation des journaux ou maintenance.
Syntaxe
* * * * * commande
│ │ │ │ │
│ │ │ │ └── Jour de la semaine (0-7)
│ │ │ └──── Mois (1-12)
│ │ └────── Jour du mois (1-31)
│ └──────── Heure (0-23)
└────────── Minute (0-59)
Exemples
* * * * * commande
*/15 * * * * commande
0 0 * * * commande
0 0 * * 0 commande
Lecture rapide :
| Exemple | Signification |
|---|---|
* * * * * | Toutes les minutes |
*/15 * * * * | Toutes les 15 minutes |
0 0 * * * | Tous les jours à minuit |
0 0 * * 0 | Tous les dimanches à minuit |
Gérer les tâches
crontab -l
crontab -e
crontab -r
Attention
crontab -r supprime toutes les tâches Cron de l'utilisateur courant.
Exemple
#!/bin/bash
echo "Hello World" >> /home/user/hello.txt
chmod +x script.sh
*/1 * * * * /home/user/script.sh
Journaliser
*/1 * * * * /home/user/script.sh > /home/user/cron.log 2>&1
Cron a souvent un environnement plus minimal que ton shell interactif. Il vaut mieux utiliser des chemins absolus dans les scripts.
which bash
which python3
Emplacements importants
| Emplacement | Description |
|---|---|
/etc/crontab | Tâches système |
crontab -e | Tâches utilisateur |
/etc/cron.hourly | Tâches horaires |
/etc/cron.daily | Tâches quotidiennes |
/etc/cron.weekly | Tâches hebdomadaires |
/etc/cron.monthly | Tâches mensuelles |
Variables et environnement
Une tâche Cron peut définir des variables au début du fichier.
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Si une commande fonctionne dans ton terminal mais pas dans Cron, vérifie souvent :
- le chemin absolu de la commande
- les permissions du script
- l'utilisateur qui exécute la tâche
- les variables d'environnement
- le répertoire de travail
- les logs de sortie
Où chercher les traces
Selon la distribution, les traces Cron peuvent se trouver dans :
grep CRON /var/log/syslog
grep CRON /var/log/cron
journalctl -u cron
Intérêt sécurité
Cron sert à l'administration, mais peut aussi servir à la persistance. Lors d'une investigation, les tâches planifiées doivent toujours être vérifiées.
Contrôles utiles :
- lister les crontabs utilisateurs
- inspecter
/etc/crontab - vérifier
/etc/cron.* - chercher les scripts modifiés récemment
- vérifier les droits d'écriture sur les scripts appelés
- contrôler les tâches lancées par
root
sudo ls -la /var/spool/cron/crontabs
sudo cat /etc/crontab
sudo find /etc/cron* -type f -ls
À retenir
Une tâche Cron est puissante parce qu'elle exécute automatiquement du code. Il faut donc contrôler qui peut la modifier, avec quels droits elle tourne et où ses traces sont écrites.
