Tout comme un similar SO question, j'essaie de surveiller un répertoire sur une machine Linux pour l'ajout de nouveaux fichiers et voudrais traiter immédiatement ces nouveaux fichiers quand ils arrivent. Des idées sur la meilleure façon de mettre en œuvre cela?Moniteur Répertoire pour les modifications
Répondre
Regardez inotify.
Avec inotify, vous pouvez regarder un répertoire pour la création de fichiers.
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.
Si vous voulez les traiter dès que possible, il n'y a pas moyen de contourner inotify. –
fschange (Linux File System Change Notification) est une solution parfaite, mais il faut patcher votre noyau
Notez l'avertissement en haut de l'article, '' 'fschange est une alternative à inotify qui [était] implémentée avant qu'inotify ne devienne une partie du noyau Linux principal. '' ' – TechplexEngineer
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.
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
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
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
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