监视更改目录

时间:2009-02-04 13:57:53

标签: linux unix file-io listeners

就像similar SO question一样,我试图监视Linux机器上的目录以添加新文件,并希望在它们到达时立即处理这些新文件。关于实现这个的最佳方法的任何想法?

4 个答案:

答案 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 inotifywaitman inotifywatch了解更多信息。

您还可以使用 incron 并使用它来调用处理脚本。

答案 1 :(得分:23)

请看inotify

使用inotify,您可以观看文件创建目录。

答案 2 :(得分:0)

我想到的一个解决方案是创建一个与cron作业相结合的“文件监听器”。我并不为此疯狂,但我认为它可行。

答案 3 :(得分:0)

fschange (Linux File System Change Notification)是一个完美的解决方案,但它需要修补你的内核