监视目录的更改

就像一个类似的SO问题 ,我试图监视Linux文件夹中添加新文件的目录,并希望在到达时立即处理这些新文件。 任何想法实现这个最好的方法?

看看inotify 。

用inotify你可以看一个文件创build的目录。

首先确保安装了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" 

另外,在inotifywait上使用--format代替-c会是一个想法。

只是man inotifywaitman inotifywatch更多的信息。

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

我想到的一个解决scheme是创build一个“文件监听器”,再加上一个cron作业。 我对此并不是疯狂,但我认为它可以工作。

fschange(Linux文件系统更改通知)是一个完美的解决scheme,但它需要修补你的内核