Ähnlich wie eine similar SO question versuche ich ein Verzeichnis auf einer Linux-Box für das Hinzufügen neuer Dateien zu überwachen und möchte sofort diese neuen Dateien verarbeiten, wenn sie ankommen. Irgendwelche Ideen über die beste Art, dies zu implementieren?Monitorverzeichnis für Änderungen
Antwort
Betrachten Sie inotify.
Mit inotify können Sie ein Verzeichnis für die Dateierstellung ansehen.
Eine Lösung, an die ich gedacht habe, ist das Erstellen eines "Datei-Listeners" in Verbindung mit einem Cron-Job. Ich bin nicht verrückt, aber ich denke, es könnte funktionieren.
Wenn Sie sie so schnell wie möglich verarbeiten möchten, gibt es keinen Weg inotify. –
fschange (Linux File System Change Notification) ist eine perfekte Lösung, aber es muss Ihr Kernel
Beachten Sie die Warnung am Anfang des Artikels, '' 'fschange ist eine Alternative zu inotify, die implementiert wurde, bevor inotify Teil des Mainline-Linux-Kernel wurde. '' ' – TechplexEngineer
Zuerst stellen Sie sicher, inotify-tools
in installiert patchen.
Dann nutzen Sie sie wie folgt:
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"
Alternativ --format
statt -c
auf inotifywait
Verwendung wäre eine Idee.
Nur man inotifywait
und man inotifywatch
für mehr Infos.
Sie können auch incron
verwenden und damit ein Hand- lungsskript aufrufen.
Danke, beste Antwort bisher. Ich war mir sicher, dass es etwas Nettes mit Inotify war und genau das ist es. Es wirkt wie ein Zauber. – akostadinov
- 1. LDAP-Abfrage für Änderungen
- 2. Monitor Verzeichnis für Änderungen?
- 3. API für Bildschirmregion Änderungen erhalten?
- 4. Uhr Form Modell für Änderungen
- 5. Python Watchdog-Überwachungsdatei für Änderungen
- 6. Beobachten einer Eigenschaft für Änderungen
- 7. Änderungen der NLS-Sortierung für Windows 7
- 8. Entity Framework gilt nicht für Änderungen
- 9. Vergleichen von ObservableCollections für alle Änderungen
- 10. Stopp ein Verzeichnis für Änderungen zuschauen (Bereinigung)
- 11. Wiederherstellen oder Aktualisieren für nicht erzwungene Änderungen
- 12. .NET 3.5 SP1-Änderungen für ASP.NET
- 13. Wie Verfolgen von Änderungen für bestimmte Datenbanktabellen?
- 14. Datenbankstrategie für Synchronisation basierend auf Änderungen
- 15. Änderungen für ein Objekt in Polymer JS
- 16. XCode-Quellcodeverwaltung: Änderungen für eine Datei anzeigen
- 17. Überwachung Mongo für Änderungen mit Node.js
- 18. Bind Formel für Änderungen im Speicher
- 19. Handhabung Bildschirmauflösung Änderungen für QML Animationen
- 20. Sicherheitsrolle für Benutzer-/Gruppenzuordnung speichert keine Änderungen
- 21. AngularJS $ überwachen root scope-Variable für Änderungen
- 22. Änderungen an CloudCode für Open Source Parse
- 23. Beobachten Ordner für Änderungen - bash Effizienz
- 24. Beobachten einer Variablen für Änderungen ohne Abfrage
- 25. Beobachten Sie ein Objektdiagramm für Änderungen
- 26. Abhören für SharedPreferences Änderungen in MainActivity
- 27. Datensatz hat Änderungen für neue Zeile
- 28. Historie der Änderungen für ein Loopback-Modell
- 29. Remote-Pfad für die Überwachung von Änderungen
- 30. Angular2 - Abonnement für Änderungen der Dienstvariablen
Inotify unterstützt keine rekursive Überwachung von Verzeichnissen. Dies bedeutet, dass für jedes Unterverzeichnis eine separate Inotify-Überwachung erstellt werden muss. Behalte dies im Kopf. – Jason
Siehe auch das Paket [incron] (http://inotify.aiken.cz/?section=incron&page=why) und seine [man page] (http://linux.die.net/man/5/incrontab). Ich bin mir nicht sicher, wie es Unterordner behandelt. – BeowulfNode42
Nein, incron behandelt keine Unterordner, es scheiterte völlig an einer geeigneten "indiegogo" Kampagne, und incron döste 2012 aus. Traurig, aber es erreichte eine Sackgasse. Ich hoffe wirklich, inotify wird bleiben ;-) – Frunsi