2009-02-04 7 views

Répondre

23

Regardez inotify.

Avec inotify, vous pouvez regarder un répertoire pour la création de fichiers.

+3

Inotify ne prend pas en charge la surveillance récursive des répertoires, ce qui signifie qu'une surveillance inotify distincte doit être créée pour chaque sous-répertoire. Garde ça en tête. – Jason

+0

Voir aussi package appelé [incron] (http://inotify.aiken.cz/?section=incron&page=why) et sa [man page] (http://linux.die.net/man/5/incrontab). Je ne suis pas sûr de la façon dont il gère les sous-dossiers. – BeowulfNode42

+0

Non, incron ne gère pas les sous-dossiers, il a totalement échoué sur une campagne "indiegogo" appropriée, et s'est incrontifié en 2012. Triste, mais il a atteint une impasse. J'espère vraiment, inotify restera ;-) – Frunsi

0

Une solution à laquelle je pensais est de créer un "écouteur de fichiers" couplé à un travail cron. Je ne suis pas folle de ça mais je pense que ça pourrait marcher.

+0

Si vous voulez les traiter dès que possible, il n'y a pas moyen de contourner inotify. –

25

d'abord, assurez-vous inotify-tools dans installé.

les utiliser comme ceci:

logOfChanges="/tmp/changes.log.csv" # Set your file name here. 

# Lock and load 
inotifywait -mrcq $DIR > "$logOfChanges" & 
IN_PID=$$ 

# Do your stuff here 
... 

# Kill and analyze 
kill $IN_PID 
while read entry; do 
    # Split your CSV, but beware that file names may contain spaces too. 
    # Just look up how to parse CSV with bash. :) 
    path=... 
    event=... 
    ... # Other stuff like time stamps? 
    # Depending on the event… 
    case "$event" in 
    SOME_EVENT) myHandlingCode path ;; 
    ... 
    *) myDefaultHandlingCode path ;; 
done < "$logOfChanges" 

Alternativement, en utilisant --format au lieu de -c sur inotifywait serait une idée.

Juste man inotifywait et man inotifywatch pour plus d'infos.

Vous pouvez également utiliser incron et l'utiliser pour appeler un script de traitement.

+1

Merci, meilleure réponse jusqu'à présent. J'étais sûr qu'il y avait quelque chose de chouette avec inotify et c'est exactement ça.Travaille comme un charme. – akostadinov

Questions connexes