unix 监视目录的更改

djmepvbi  于 7个月前  发布在  Unix
关注(0)|答案(5)|浏览(73)

就像similar SO question一样,我试图监视Linux机器上的一个目录,以便添加新文件,并希望在新文件到达时立即处理这些新文件。

bqucvtff

bqucvtff1#

看看inotify
使用inotify,您可以监视目录中的文件创建。

k2fxgqgv

k2fxgqgv2#

首先确保安装了**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**来调用处理脚本。

gzszwxb4

gzszwxb43#

我想到的一个解决方案是创建一个“文件侦听器”和一个cron作业,我不喜欢这个,但我认为它可以工作。

hwazgwia

hwazgwia4#

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

tct7dpnv

tct7dpnv5#

看看entr或man entr。
使用entr,您可以比inotify更容易地监视目录中的文件创建或修改。

相关问题