就像similar SO question一样,我试图监视Linux机器上的目录以添加新文件,并希望在它们到达时立即处理这些新文件。关于实现这个的最佳方法的任何想法?
答案 0 :(得分:25)
首先确保已安装 inotify-tools
。
然后像这样使用它们:
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"
或者,在--format
上使用-c
代替inotifywait
会是一个想法。
仅限man inotifywait
和man inotifywatch
了解更多信息。
您还可以使用 incron
并使用它来调用处理脚本。
答案 1 :(得分:23)
请看inotify。
使用inotify,您可以观看文件创建目录。
答案 2 :(得分:0)
我想到的一个解决方案是创建一个与cron作业相结合的“文件监听器”。我并不为此疯狂,但我认为它可行。
答案 3 :(得分:0)
fschange (Linux File System Change Notification)是一个完美的解决方案,但它需要修补你的内核