यादृच्छिक समय पर बनाई गई फ़ाइलों को संभालने/संसाधित करने का एक अच्छा तरीका हैincron
. का उपयोग करना cron
. के बजाय . (नोट:चूंकि incron Linux कर्नेल केसूचित करें
का उपयोग करता है syscalls, यह समाधान केवल Linux के साथ काम करता है।)
जबकि cron
दिनांक और समय के आधार पर कार्य चलाता है, incron
एक निगरानी निर्देशिका में परिवर्तन के आधार पर नौकरी चलाता है। उदाहरण के लिए, जब भी कोई नई फ़ाइल बनाई या संशोधित की जाती है, तो आप नौकरी चलाने के लिए incron को कॉन्फ़िगर कर सकते हैं।
उबंटू पर, पैकेज को incron
. कहा जाता है . मैं RedHat के बारे में निश्चित नहीं हूँ, लेकिन मेरा मानना है कि यह सही पैकेज है:http://rpmfind.net//linux/RPM/dag/redhat/el5/i386/incron-0.5.9-1.el5.rf। i386.html
।
एक बार जब आप इनक्रोन पैकेज स्थापित कर लेते हैं, तो पढ़ें
man 5 incrontab
incrontab कॉन्फ़िग फ़ाइल को सेटअप करने के तरीके के बारे में जानकारी के लिए। आपका incron_config
फ़ाइल कुछ इस तरह दिख सकती है:
/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 $#
फिर इस कॉन्फिग को इनक्रोन्ड डेमॉन के साथ पंजीकृत करने के लिए, आप
. चलाएंगेincrontab /path/to/incron_config
यही सब है इसके लिए। अब जब भी /var/ss01, /var/ss02, /var/ss03 या /var/ss04 में कोई फ़ाइल बनाई जाती है, तो कमांड
/path/to/processing/script.py $#
चलाया जाता है, $# को नई बनाई गई फ़ाइल के नाम से बदल दिया जाता है।
यह हैश को स्टोर/तुलना करने की आवश्यकता को समाप्त कर देगा, और फ़ाइलें केवल एक बार संसाधित हो जाएंगी -- उनके बनने के तुरंत बाद।
बस सुनिश्चित करें कि आपकी प्रोसेसिंग स्क्रिप्ट मॉनिटर की गई निर्देशिकाओं के शीर्ष स्तर में नहीं लिखी गई है। अगर ऐसा होता है, तो incrond नई फ़ाइल को नोटिस करेगा, और आपको एक अनंत लूप में भेजते हुए script.py को फिर से लॉन्च करेगा।
incrond व्यक्तिगत निर्देशिकाओं की निगरानी करता है, और उपनिर्देशिकाओं की पुनरावर्ती निगरानी नहीं करता है। तो आप tshark को /var/ss01/tobeprocessed पर लिखने के लिए निर्देशित कर सकते हैं, मॉनिटर/var/ss01/tobeprocessed के लिए incron का उपयोग कर सकते हैं, और उदाहरण के लिए, अपने script.py को /var/ss01 पर लिख सकते हैं।
पुनश्च. inotify करने के लिए एक पायथन इंटरफ़ेस भी है, जिसे pyinotify कहा जाता है। . incron के विपरीत, pyinotify उपनिर्देशिकाओं की पुनरावर्ती निगरानी कर सकता है। हालांकि, आपके मामले में, मुझे नहीं लगता कि पुनरावर्ती निगरानी सुविधा उपयोगी या आवश्यक है।