comment mettre un déclencheur sur un répertoire

25

J'ai un script qui scanne un répertoire et fait 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 une tâche cron quotidienne. 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 de la tâche cron.

Comment puis je faire ça? y a-t-il une commande ou un programme à installer?

Merci d'avance pour votre aide.

vert albert
la source

Réponses:

23

inoticoming

inoticoming est un démon pour regarder un répertoire avec le framework inotify de Linux et déclencher des actions une fois que des fichiers avec des noms spécifiques y sont placés.

Par exemple, il peut être utilisé pour attendre que les fichiers .changes soient téléchargés dans un répertoire et appeler reprepro pour les placer dans votre référentiel.

incron

incron est un système "inotify cron". Il fonctionne comme le cron classique mais est piloté par des événements de système de fichiers au lieu d'é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 les appels système inotify du noyau Linux.

comme cron, chaque utilisateur peut éditer ses propres tables incron.

Florian Diesch
la source
2
Pourriez-vous fournir un exemple? Les liens vers les pages de manuel sont également les bienvenus, je n'ai pas trouvé celui pour incron, celui- inoticomingci est ici .
Lekensteyn
Pour incron voir les pages de manuel d'incrond, incrontab et incron.conf
Florian Diesch
2
J'ai modifié votre réponse d'une manière que je voulais voir. Je l'ai copié à partir des descriptions des packages, veuillez être si complet à l'avenir lorsque vous
nommerez des
4

Il y a aussi un petit programme appelé iwatch- voir la page de manuel (cette page est pour Ubuntu précise (12.04), elle a des liens vers d'autres versions d'ubuntu).

iwatch a la capacité de surveiller les dossiers de manière récursive (c'est-à-dire: les sous-dossiers aussi) et d'envoyer des e-mails en réponse aux événements de fichiers / répertoires.

drevicko
la source
3

Un autre utilitaire à savoir est fileschanged( page de manuel ici ), qui peut surveiller l'événement du système de fichiers sur les fichiers ou répertoires sélectionnés, par exemple la commande suivante

fileschanged -s created -t1 $PWD

doit surveiller le répertoire actuel pour les événements de création de fichiers, en écrivant le nom du fichier créé stdoutavec un délai d'attente de 1 s.

fileschangedpeut regarder les dossiers récursivement (comme cela peut iwatchêtre noté dans une autre réponse), contrairement à incronet inoticoming.

enzotib
la source
2

la page de manuel inotify se trouve

si vous préférez les scripts python, vous pouvez utiliser pyinotify

Pascal
la source