监视目录的更改
就像一个类似的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 inotifywait
和man inotifywatch
更多的信息。
您也可以使用incron
并使用它来调用处理脚本。
我想到的一个解决scheme是创build一个“文件监听器”,再加上一个cron作业。 我对此并不是疯狂,但我认为它可以工作。
fschange(Linux文件系统更改通知)是一个完美的解决scheme,但它需要修补你的内核