我想要做的是,监视一个目录(不是递归的,只有一个)以创建新文件,并将这些文件在写入时附加到一个大文件中。
正在写入的文件数量巨大,可能高达 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
写入时处理所有文件。
任何人都可以建议我解决这个问题的优雅解决方案吗?