comment mettre un trigger sur un répertoire

23

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 job cron quotidien. 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 le faire? existe-t-il une commande ou un programme à installer?

Merci d'avance pour toute aide.

    
posée albert green 19.05.2011 - 14:48
la source

4 réponses

21

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 les fichiers .changes téléchargés dans un répertoire et appeler reprepro pour les placer dans votre référentiel.

  • Page manuelle d'inoticoming

incron

  

incron est un système "inotify cron". Il fonctionne comme le cron normal 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.

     

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

  • Page manuelle de incrond
  • Page manuelle de incrontab
  • Page de manuel d'icron.conf
réponse donnée Florian Diesch 19.05.2011 - 14:52
la source
3

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

iwatch a la possibilité de regarder les dossiers de manière récursive (c.-à-d. les sous-dossiers aussi) et d'envoyer des emails en réponse aux événements de fichiers / répertoires.

    
réponse donnée drevicko 08.04.2013 - 03:21
la source
2

La page de manuel inotify se trouve ici

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

    
réponse donnée Pascal 19.05.2011 - 15:10
la source
2

Un autre utilitaire à connaître est fileschanged ( page de manuel ici ), qui peut surveiller les événements du système de fichiers sur les fichiers ou 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 fichiers, en écrivant le nom du fichier créé sur stdout avec un délai d'attente de 1 secondes.

fileschanged peut regarder les dossiers de manière récursive (tout comme iwatch comme indiqué dans une autre réponse), contrairement à incron et inoticoming .

    
réponse donnée enzotib 19.05.2011 - 15:59
la source

Lire d'autres questions sur les étiquettes