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 :

ExempleSignification
* * * * *Toutes les minutes
*/15 * * * *Toutes les 15 minutes
0 0 * * *Tous les jours à minuit
0 0 * * 0Tous 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

EmplacementDescription
/etc/crontabTâches système
crontab -eTâches utilisateur
/etc/cron.hourlyTâches horaires
/etc/cron.dailyTâches quotidiennes
/etc/cron.weeklyTâches hebdomadaires
/etc/cron.monthlyTâ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.

Précédent
Services systemd