Gérer vos tâches planifiées avec incron

2015juil.20

Dans vos applications, vous avez certainement régulièrement besoin d’effectuer des tâches planifiées via crontab ou peut être utilisez-vous crontab pour réaliser des actions prenant beaucoup de temps en arrière plan mais vous avez besoin d’obtenir le résultat le plus rapidement possible.

Dans ce cas, vous pouvez avoir besoin de incron, cet utilitaire vous permet de réaliser des tâches lorsque des modifications sont apportées au système de fichier (création de fichier, suppression…). Dès lors, il ne vous reste plus qu’à créer un petit fichier « drapeau » dans un répertoire pour que la tâche s’exécute instantanément en arrière plan.

L’installation sous Debian se passe comme suit :

#installation du paquet
apt-get install incron

#ajout de root dans la liste des utilisateurs autorisés
echo "root" >> /etc/incron.allow
#ajout d'une tâche planifiée grâce à la commande
incrontab -e

Une fois l’édition lancée, ajoutez une ligne du style :

CHEMIN_A_SURVEILLER EVENEMENT SCRIPT_A_EXECUTER

Attention, si vous ne souhaitez pas voir apparaître des « incrond[19376]: cannot exec process: No such file or directory » dans votre fichier syslog, choisissez des chemins sans « espace » ou alors échappez-les avec des backslash(\)

Liste des événements possibles :

  • IN_CREATE : création d’un fichier (attention si celui-ci est volumineux, préférez IN_CLOSE_WRITE)
  • IN_DELETE : fichier ou répertoire supprimé
  • IN_MODIFY : modification d’un fichier ou répertoire
  • IN_ALL_EVENTS : on surveille tout

Argument intéressant à ajouter à la fin de votre ligne de commande :

  • $# : le nom du fichier ou répertoire qui a provoqué le déclenchement de l’événement

Incron vous permettra également d’effectuer instantanément le traitement de fichiers déposés via FTP (intégration de données en base…), d’effectuer une surveillance de fichiers de configuration en étant alerté par email lors de la modification de fichiers sensibles.

Commentaires

 Clément Levallois
 18000 Bourges
 SIRET : 81783887300021