Những gì tôi muốn làm là, để theo dõi một thư mục (không phải đệ quy, chỉ một) cho các tệp mới được tạo và nối các tệp đó vào một tệp lớn khi chúng được ghi.
Số lượng tệp đang được viết là rất lớn, có thể lên tới 50.000.
Bằng cách sử dụng inotifywait
, tôi đang theo dõi thư mục như:
inotifywait -m -e create ~/folder | awk '($2=="CREATE"){print $3}' > ~/output.file
Vì vậy, tôi đang lưu trữ tên của các tệp mới được tạo ~/output.file
và sau đó sử dụng vòng lặp for
for FILE in `cat ~/output.file`
do
cat $FILE >> ~/test.out
done
Nó hoạt động tốt, nếu tốc độ mà một tệp đang được ghi (tạo) ~/folder
giống như 1 tệp mỗi giây.
Nhưng yêu cầu rất lớn và tốc độ tạo các tệp rất cao, như 500 tệp mỗi phút (hoặc thậm chí nhiều hơn).
Tôi đã kiểm tra số lượng tệp ~/folder
sau khi quá trình hoàn tất, nhưng nó không khớp với inotifywait
đầu ra. Có một sự khác biệt giống như 10 tập tin1515, khác nhau.
Ngoài ra, vòng lặp
for FILE in `cat ~/output.file`
do
done
không xử lý tất cả các tệp trong ~/output.file
khi chúng đang được viết.
Bất cứ ai có thể xin vui lòng gợi ý cho tôi một giải pháp thanh lịch cho vấn đề này?