Tâches planifiées sous Linux


🎩 Les Tâches Planifiées sous Linux Debian : Cron, At et le doux parfum de l’automatisation

Bienvenue dans le monde merveilleux (et légèrement inquiétant) des tâches planifiées sous Linux Debian. Ici, les scripts s’exécutent sans surveillance humaine, les serveurs bossent pendant que vous dormez, et parfois, une étoile mal placée dans un fichier suffit à plonger tout un système dans le chaos. Aujourd’hui, nous explorons les entrailles de cron et at avec rigueur, précision, et une touche d’humour noir.

🧠 Cron : le démon qui ne dort jamais

cron est un démon, c’est-à-dire un programme qui tourne en arrière-plan. Sa mission : exécuter des commandes à des moments précis, définis par l’utilisateur ou le système. Il consulte régulièrement sa liste de tâches (les crontabs), et si l’heure est venue, il agit. Sans discuter. Sans pitié.

⚙️ Syntaxe de la crontab

* * * * * /chemin/vers/commande

Chaque astérisque correspond, dans l’ordre, à :

  • Minute (0–59)
  • Heure (0–23)
  • Jour du mois (1–31)
  • Mois (1–12)
  • Jour de la semaine (0 = dimanche)

👨‍💻 Exemples

30 2 * * * /usr/local/bin/backup.sh

Lance backup.sh chaque jour à 2h30.

🛠️ Gérer ses crontabs

  • crontab -e : éditer votre crontab
  • crontab -l : afficher vos tâches planifiées
  • crontab -r : supprimer toutes vos tâches (avec regrets)

📁 Crontabs système

  • /etc/crontab : contient aussi l’utilisateur qui exécute la tâche
  • /etc/cron.d/ : fichiers de tâches séparés, très utilisés par les paquets Debian
  • /etc/cron.daily/, cron.hourly/, etc. : scripts lancés à intervalle régulier

🔍 Où vont les sorties ?

Par défaut, la sortie standard est envoyée par mail (si un système de mail local est configuré). Sinon, redirigez vers un fichier :

0 3 * * * /usr/local/bin/script.sh >> /var/log/script.log 2>&1

👮 Sécurité

Utilisez /etc/cron.allow et /etc/cron.deny pour restreindre l’accès à cron. Vérifiez toujours les permissions des scripts. N’exécutez jamais aveuglément un script root téléchargé sur un forum obscur.

🪦 Debugging : quand cron échoue en silence

  • Vérifiez /var/log/syslog ou /var/log/cron.log
  • Utilisez des chemins absolus
  • Testez manuellement chaque commande avant de l’ajouter à une crontab

⏰ At : pour les tâches ponctuelles (ou les vengeances programmées)

at permet de planifier une tâche unique à exécuter dans le futur. Idéal pour exécuter un script dans 10 minutes, ou à 3h17 précises, juste pour embêter un collègue (avec modération).

📌 Exemple basique

echo "/home/user/script.sh" | at now + 10 minutes

Exécute script.sh dans 10 minutes.

🧾 Syntaxes utiles

  • at 15:00 : aujourd’hui à 15h
  • at 3pm tomorrow
  • at midnight

🕵️ Suivre et gérer les jobs at

  • atq : liste des tâches en attente
  • atrm <numéro> : supprimer une tâche

🔐 Sécurité

Même logique que cron : les fichiers /etc/at.allow et /etc/at.deny gèrent les autorisations.

🎬 En résumé

Outil Utilité
cron Planification récurrente
at Exécution ponctuelle dans le futur

Que vous utilisiez cron pour des backups nocturnes ou at pour déclencher un redémarrage à distance juste avant une réunion importante (expérience non recommandée), maîtriser ces outils, c’est reprendre le contrôle du temps. Et accessoirement éviter que votre serveur ne tombe le jour où vous êtes en week-end prolongé.

Bonne planification, et que les logs soient avec vous.