小编roh*_*lky的帖子

Inotify 等待目录中的大量文件

我想要做的是,监视一个目录(不是递归的,只有一个)以创建新文件,并将这些文件在写入时附加到一个大文件中。

正在写入的文件数量巨大,可能高达 50,000。

通过使用inotifywait,我正在监视目录,例如:

inotifywait -m -e create ~/folder | awk '($2=="CREATE"){print $3}' > ~/output.file
Run Code Online (Sandbox Code Playgroud)

所以我存储了创建的新文件的名称,~/output.file然后使用 for 循环

for FILE in `cat ~/output.file` 
do
    cat $FILE >> ~/test.out
done
Run Code Online (Sandbox Code Playgroud)

如果写入(创建)文件的速率~/folder类似于每秒 1 个文件,则它工作正常。

但是要求很大,而且创建文件的速度非常高,比如每分钟 500 个文件(甚至更多)。

我检查了~/folder进程完成后的文件数,但它与inotifywait输出不匹配。有 10-15 个文件的差异,各不相同。

此外,循环

for FILE in `cat ~/output.file`
do
done
Run Code Online (Sandbox Code Playgroud)

不会在~/output.file写入时处理所有文件。

任何人都可以建议我解决这个问题的优雅解决方案吗?

linux performance awk inotify

8
推荐指数
1
解决办法
4384
查看次数

标签 统计

awk ×1

inotify ×1

linux ×1

performance ×1