监视目录的变化
- 2024-10-30 08:36:00
- admin 原创
- 241
问题描述:
与类似的 SO 问题非常相似,我试图监视 Linux 机器上的目录以添加新文件,并希望在新文件到达时立即处理这些新文件。关于实现此目的的最佳方法,有什么想法吗?
解决方案 1:
首先确保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
oninotifywait
也是一个好主意。
只是man inotifywait
想man inotifywatch
了解更多信息。
您还可以使用incron
它来调用处理脚本。
解决方案 2:
看看inotify。
使用 inotify 您可以监视目录中的文件创建。
解决方案 3:
我想到的一个解决方案是创建一个“文件监听器”和一个 cron 任务。我对此并不热衷,但我认为它可以起作用。
解决方案 4:
fschange(Linux 文件系统更改通知) 是一个完美的解决方案,但它需要修补你的内核
解决方案 5:
查看entr或 man entr。
使用 entr,您可以比 inotify 更轻松地监视目录中文件的创建或修改。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD