J'ai un script qui analyse un répertoire et effectue une maintenance sur les fichiers qu'il contient. Un autre processus crée les fichiers dans le répertoire (10 à 30 fichiers par jour).
Le script est appelé via un travail journalier. Ce dont j'ai besoin, c'est de déclencher le script sur un événement (à chaque fois qu'un nouveau fichier est créé dans le répertoire). Je préfère cela plutôt que d’augmenter la fréquence du travail cron.
Comment puis je faire ça? y a-t-il une commande ou un programme à installer?
Merci d'avance pour votre aide.
inoticoming est un démon qui surveille un répertoire avec le framework inotify de Linux et déclenche des actions une fois que des fichiers portant des noms spécifiques y sont placés.
Par exemple, il peut être utilisé pour attendre les fichiers .changes téléchargés dans un répertoire et appeler reprepro pour les mettre dans votre référentiel.
incron est un système "inotify cron". Cela fonctionne comme le cron habituel mais est piloté par des événements de système de fichiers plutôt que par des événements temporels. Ce paquet fournit deux programmes, un démon appelé "incrond" (analogue à crond) et un manipulateur de table "incrontab" (comme "crontab").
incron utilise le noyau Linux inotify syscalls.
à l'instar de cron, chaque utilisateur peut éditer ses propres tables d'incron.
Il existe également un petit programme appelé iWatch
- voir le page de manuel (cette page est pour Ubuntu precise (12.04), elle contient des liens vers d’autres versions d’Ubuntu).
iWatch
a la capacité de surveiller les dossiers de manière récursive (c.-à-d. les sous-dossiers également) et d'envoyer des courriels en réponse à des événements de fichier/répertoire.
Un autre utilitaire intéressant à connaître est fileschanged
( page de manuel ici ), qui peut surveiller les événements du système de fichiers sur les fichiers ou les répertoires sélectionnés, par exemple la commande suivante
fileschanged -s created -t1 $PWD
devrait surveiller le répertoire en cours pour les événements de création de fichier, en écrivant le nom du fichier créé sur stdout
avec un délai d'expiration de 1 seconde.
fileschanged
peut regarder les dossiers de manière récursive (comme iWatch
comme indiqué dans une autre réponse), contrairement à incron
et inoticoming
name__.