Một cách tốt để xử lý / xử lý các tệp được tạo vào các thời điểm ngẫu nhiên là sử dụng incron
chứ không phải là cron
. (Lưu ý:vì incron sử dụng inotify
của hạt nhân Linux syscalls, giải pháp này chỉ hoạt động với Linux.)
Trong khi cron
chạy công việc dựa trên ngày và giờ, incron
chạy một công việc dựa trên những thay đổi trong một thư mục được giám sát. Ví dụ:bạn có thể định cấu hình incron để chạy ajob mỗi khi tệp mới được tạo hoặc sửa đổi.
Trên Ubuntu, gói được gọi là incron
. Tôi không chắc về RedHat, nhưng tôi tin rằng đây là gói phù hợp: http://rpmfind.net//linux/RPM/dag/redhat/el5/i386/incron-0.5.9-1.el5.rf. i386.html
.
Sau khi bạn cài đặt gói incron, hãy đọc
man 5 incrontab
để biết thông tin về cách thiết lập tệp cấu hình incrontab. incron_config
của bạn tệp có thể trông giống như sau:
/var/ss01/ IN_CLOSE_WRITE /path/to/processing/script.py $#
/var/ss02/ IN_CLOSE_WRITE /path/to/processing/script.py $#
/var/ss03/ IN_CLOSE_WRITE /path/to/processing/script.py $#
/var/ss04/ IN_CLOSE_WRITE /path/to/processing/script.py $#
Sau đó, để đăng ký cấu hình này với daemon incrond, bạn sẽ chạy
incrontab /path/to/incron_config
Thats tất cả để có nó. Bây giờ bất cứ khi nào tệp được tạo trong / var / ss01, / var / ss02, / var / ss03 hoặc / var / ss04, lệnh
/path/to/processing/script.py $#
được chạy, với $ # được thay thế bằng tên của tệp mới tạo.
Điều này sẽ loại bỏ nhu cầu lưu trữ / so sánh các hàm băm và các tệp sẽ chỉ được xử lý một lần - ngay sau khi chúng được tạo.
Chỉ cần đảm bảo rằng tập lệnh xử lý của bạn không ghi vào cấp cao nhất của các thư mục được giám sát. Nếu có, thì incrond sẽ thông báo tệp mới được tạo và khởi chạy lại script.py, đưa bạn vào một vòng lặp vô hạn.
incrond giám sát các thư mục riêng lẻ, và không giám sát đệ quy các thư mục con. Vì vậy, bạn có thể hướng tshark ghi vào / var / ss01 / tobeprocessed, sử dụng incron để giám sát / var / ss01 / tobeprocessed và để script.py của bạn ghi vào / var / ss01 chẳng hạn.
Tái bút. Ngoài ra còn có một giao diện python để inotify, được gọi là pyinotify . Không giống như incron, pyinotify có thể theo dõi đệ quy các thư mục con. Tuy nhiên, trong trường hợp của bạn, tôi không nghĩ rằng tính năng giám sát đệ quy là hữu ích hoặc cần thiết.