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
- 1. Services Windows concurrents qui surveillent les modifications de répertoire
- 2. Perforce P4J obtenir des listes de modifications pour un répertoire
- 3. Modifications de version pour les procédures stockées
- 4. Meilleure architecture pour gérer les modifications du système de fichiers?
- 5. Moniteur MSMQ
- 6. Imprimer les modifications DOM
- 7. Besoin d'imiter un routeur pour tester un moniteur SNMP
- 8. Comment surveiller les tables dans SQL Server pour les modifications
- 9. SSH "Moniteur de connexion" pour Linux
- 10. Moniteur de référentiel Perforce pour Windows
- 11. Surveiller les modifications au Registre
- 12. Flash Tab Modifier les modifications
- 13. Disposition du répertoire pour les tests PHPUnit?
- 14. répertoire distinct pour les ressources iphone
- 15. Rapport planifié (tâche) Moniteur
- 16. Quelles sont les modifications empilables?
- 17. Programmation Positionnement du moniteur
- 18. moniteur de bobine d'imprimante
- 19. Moniteur Windows Partager
- 20. Utilisation de mq de mercurial pour gérer les modifications locales
- 21. Cruise control.NET pour ignorer les modifications dans certains dossiers locaux?
- 22. Impossible de télécharger les modifications vers ASP.NET - la fonction de publication ne télécharge pas les modifications
- 23. Moniteur de système logiciel visuel
- 24. moniteur avec surcharge d'opérateur C++
- 25. Envoyer les modifications d'une seule entité
- 26. Comment valider les modifications dans SQLite?
- 27. Lire les manuels MySQL dans le moniteur MySQL?
- 28. Utilisation de ChangeDisplaySettingsEx dans Delphi pour définir le moniteur principal
- 29. Moniteur de tunnel SSH inversé
- 30. Créer un moniteur pour le serveur de construction TFS 2008
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