Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्रॉन जॉब में प्रोसेस करने के लिए नई फाइलों को कैसे हैंडल करें?

यादृच्छिक समय पर बनाई गई फ़ाइलों को संभालने/संसाधित करने का एक अच्छा तरीका है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 उपनिर्देशिकाओं की पुनरावर्ती निगरानी कर सकता है। हालांकि, आपके मामले में, मुझे नहीं लगता कि पुनरावर्ती निगरानी सुविधा उपयोगी या आवश्यक है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में कीवर्ड खोज कैसे कार्यान्वित करें?

  2. SQL फ़ाइल निष्पादित करते समय mysql त्रुटि संदेशों पर ध्यान न दें

  3. PHP के साथ ON DUPLICATE KEY UPDATE का उपयोग करते समय mysql_insert_id () प्राप्त करना

  4. MySQL InnoDB - लेन-देन के बारे में उलझन में

  5. एकाधिक रूप और एक PHP रिसीवर