Podobnie jak w przypadku similar SO question, próbuję monitorować katalog na Linuksie w celu dodania nowych plików i chciałbym natychmiast przetworzyć nowe pliki po ich dostarczeniu. Wszelkie pomysły na najlepszy sposób realizacji tego?Monitorowanie katalogu zmian
Odpowiedz
Spójrz na inotify.
Inotify umożliwia oglądanie katalogu w celu utworzenia pliku.
Jednym z rozwiązań, o których myślałem, jest stworzenie "słuchacza plików" połączonego z zadaniem cron. Nie szaleję za tym, ale myślę, że to może zadziałać.
Jeśli chcesz je przetworzyć jak najszybciej, nie ma możliwości inotify. –
fschange (Linux File System Change Notification) jest idealnym rozwiązaniem, ale musi załatać swoje jądro
Uwaga ostrzeżenie na górze artykułu, '' 'fschange jest alternatywą dla inotify, która [została] zaimplementowana zanim inotify staną się częścią głównego jądra Linuksa. '' ' – TechplexEngineer
najpierw upewnij inotify-tools
w zainstalowana.
następnie wykorzystać je tak:
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"
Alternatywnie, przy użyciu --format
zamiast -c
na inotifywait
byłby pomysł.
Po prostu man inotifywait
i man inotifywatch
, aby uzyskać więcej informacji.
Można również użyć incron
i użyć go do wywołania skryptu obsługi.
Dzięki, najlepsza odpowiedź do tej pory. Byłem pewien, że jest coś fajnego z inotify i to jest dokładnie to. – akostadinov
Inotify nie obsługuje rekursywnie oglądania katalogów, co oznacza, że osobny zegarek inotify musi być utworzony dla każdego podkatalogu. Pamiętaj o tym. – Jason
Zobacz także pakiet o nazwie [incron] (http://inotify.aiken.cz/?section=incron&page=why) i jego [strona man] (http://linux.die.net/man/5/incrontab). Nie wiem, jak obsługuje podfoldery. – BeowulfNode42
Nie, incron nie obsługuje podfolderów, całkowicie zawiedziony w odpowiedniej kampanii "indiegogo", a incron drzemał w 2012 roku. Smutny, ale osiągnął ślepy zaułek. Naprawdę mam nadzieję, że inotify pozostanie ;-) – Frunsi