एंड्रॉयड

Crontab के साथ अनुसूचित क्रॉन नौकरियों

लिनक्स / मैक ट्यूटोरियल: क्रॉन नौकरी - कैसे अनुसूची आदेश को crontab के साथ

लिनक्स / मैक ट्यूटोरियल: क्रॉन नौकरी - कैसे अनुसूची आदेश को crontab के साथ

विषयसूची:

Anonim

क्रोन एक शेड्यूलिंग डेमॉन है जो निर्दिष्ट अंतराल पर कार्यों को निष्पादित करता है। इन कार्यों को क्रोन जॉब्स कहा जाता है और ज्यादातर सिस्टम रखरखाव या प्रशासन को स्वचालित करने के लिए उपयोग किया जाता है।

उदाहरण के लिए, आप पुनरावृत्ति कार्यों को स्वचालित करने के लिए क्रोन जॉब सेट कर सकते हैं जैसे डेटाबेस या डेटा का बैकअप लेना, नवीनतम सुरक्षा पैच के साथ सिस्टम को अपडेट करना, डिस्क स्थान उपयोग की जांच करना, ईमेल भेजना आदि। कुछ अनुप्रयोगों, जैसे कि ड्रुपल या मैगेंटो, को कुछ कार्यों को करने के लिए क्रोन नौकरियों की आवश्यकता होती है।

क्रोन नौकरियों को मिनट, घंटे, महीने के दिन, महीने, सप्ताह के दिन या इनमें से किसी भी संयोजन से चलाने के लिए निर्धारित किया जा सकता है।

Crontab फ़ाइल क्या है

Crontab (क्रोन टेबल) एक पाठ फ़ाइल है जो क्रोन नौकरियों की अनुसूची को निर्दिष्ट करती है। दो प्रकार की crontab फाइलें हैं। सिस्टम-वाइड क्रॉस्टैब फाइलें और अलग-अलग यूजर क्रॉस्टैब फाइल्स।

उपयोगकर्ता crontab फ़ाइलों को उपयोगकर्ता के नाम से संग्रहीत किया जाता है, और उनका स्थान ऑपरेटिंग सिस्टम द्वारा भिन्न होता है। Red Hat आधारित प्रणाली जैसे CentOS में, crontab फाइलें /var/spool/cron निर्देशिका में संग्रहीत की जाती हैं, जबकि Debian और Ubuntu फ़ाइलों को /var/spool/cron/crontabs निर्देशिका में संग्रहीत किया जाता है।

यद्यपि आप उपयोगकर्ता क्रॉस्टैब फ़ाइलों को मैन्युअल रूप से संपादित कर सकते हैं, यह crontab कमांड का उपयोग करने के लिए अनुशंसित है।

/etc/crontab और /etc/cron.d निर्देशिका के अंदर की फाइलें सिस्टम-वाइड crontab फाइलें हैं जिन्हें केवल सिस्टम प्रशासक द्वारा संपादित किया जा सकता है।

अधिकांश लिनक्स वितरण में आप /etc/cron.{hourly, daily, weekly, monthly} निर्देशिकाओं के अंदर स्क्रिप्ट भी डाल सकते हैं और स्क्रिप्ट को हर hour/day/week/month निष्पादित किया जाएगा।

Crontab सिंटेक्स और ऑपरेटरों

उपयोगकर्ता crontab फ़ाइल में प्रत्येक पंक्ति में छह फ़ील्ड होते हैं जिन्हें एक स्थान द्वारा अलग किया जाता है जिसके बाद कमांड को चलाया जाना चाहिए।

* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)

पहले पाँच क्षेत्रों में एक या एक से अधिक मान हो सकते हैं, एक अल्पविराम द्वारा अलग किए गए या एक हाइफ़न द्वारा अलग किए गए मान हो सकते हैं।

  • * -तारांकन ऑपरेटर का मतलब है कोई भी मूल्य या हमेशा। यदि आपके पास ऑवर फ़ील्ड में तारांकन चिह्न है, तो इसका मतलब है कि कार्य प्रत्येक घंटे में किया जाएगा। , -अल्पविराम ऑपरेटर आपको पुनरावृत्ति के लिए मूल्यों की एक सूची निर्दिष्ट करने की अनुमति देता है। उदाहरण के लिए, यदि आपके पास घंटे के क्षेत्र में 1, 3, 5 , तो कार्य 1 बजे, 3 बजे और 5 बजे चलेगा। - - हाइफ़न ऑपरेटर आपको कई मान निर्दिष्ट करने की अनुमति देता है। यदि आपके पास सप्ताह क्षेत्र के दिन में 1-5 है, तो कार्य प्रत्येक सप्ताह के दिन (सोमवार से शुक्रवार तक) चलेगा। / -The स्लैश ऑपरेटर आपको उन मूल्यों को निर्दिष्ट करने की अनुमति देता है जो उनके बीच एक निश्चित अंतराल पर दोहराए जाएंगे। उदाहरण के लिए, यदि आपके पास घंटा क्षेत्र में */4 है, तो इसका मतलब है कि कार्रवाई हर चार घंटे में की जाएगी। यह 0, 4, 8, 12, 16, 20 निर्दिष्ट करने के 0, 4, 8, 12, 16, 20 । स्लैश ऑपरेटर से पहले तारांकन के बजाय, आप मूल्यों की एक श्रृंखला का उपयोग कर सकते हैं, 1-30/10 मतलब 1, 11, 21 के समान है।

सिस्टम चौड़ा Crontab फ़ाइलें

सिस्टम-वाइड क्रॉस्टैब फ़ाइलों का सिंटैक्स उपयोगकर्ता क्रॉस्टैब्स की तुलना में थोड़ा अलग है। इसमें एक अतिरिक्त अनिवार्य उपयोगकर्ता फ़ील्ड शामिल है जो निर्दिष्ट करता है कि कौन सा उपयोगकर्ता क्रोन जॉब चलाएगा।

* * * * * command(s) * * * * * command(s)

पूर्वनिर्धारित मैक्रों

सामान्य अंतराल निर्दिष्ट करने के लिए कई विशेष क्रोन शेड्यूल मैक्रोज़ का उपयोग किया जाता है। आप इस कॉलम को पांच-कॉलम की तारीख विनिर्देश के स्थान पर उपयोग कर सकते हैं।

  • @yearly (या @annually ) - 1 जनवरी की मध्यरात्रि (12:00 @annually ) पर वर्ष में एक बार निर्दिष्ट कार्य को चलाएं। 0 0 1 1 * बराबर। @monthly महीने - महीने के पहले दिन मध्यरात्रि में महीने में एक बार निर्दिष्ट कार्य को चलाएं। 0 0 1 * * बराबर। @weekly - रविवार को मध्यरात्रि में सप्ताह में एक बार निर्दिष्ट कार्य चलाएँ। 0 0 * * 0 बराबर। @daily - मध्यरात्रि में दिन में एक बार निर्दिष्ट कार्य चलाएँ। 0 0 * * * बराबर। @hourly - घंटे की शुरुआत में एक बार निर्दिष्ट कार्य को चलाएं। 0 * * * * बराबर। @reboot - सिस्टम स्टार्टअप (बूट-टाइम) में निर्दिष्ट कार्य चलाएँ।

लिनक्स Crontab कमांड

Crontab कमांड आपको संपादन के लिए crontab फ़ाइल को स्थापित करने या खोलने की अनुमति देता है।

आप निम्न विकल्पों का उपयोग करके क्रोन नौकरियों को देखने, जोड़ने, हटाने या संशोधित करने के लिए क्रॉन्स्ट कमांड का उपयोग कर सकते हैं:

  • crontab -e - crontab फ़ाइल संपादित करें, या यदि यह पहले से मौजूद नहीं है, तो एक बनाएं। crontab -l - crontab फ़ाइल सामग्री प्रदर्शित करें। crontab -r - अपनी वर्तमान crontab फ़ाइल निकालें। crontab -i - हटाने से पहले एक प्रॉम्प्ट के साथ अपनी वर्तमान crontab फ़ाइल निकालें। crontab -u - अन्य उपयोग crontab फ़ाइल संपादित करें। सिस्टम व्यवस्थापक विशेषाधिकार की आवश्यकता है।

Crontab कमांड विज़ुअलेट या EDITOR पर्यावरण चर द्वारा निर्दिष्ट संपादक का उपयोग करके crontab फ़ाइल को खोलता है।

Crontab चर

क्रोन डेमॉन स्वचालित रूप से कई पर्यावरण चर निर्धारित करता है।

  • डिफ़ॉल्ट पथ PATH=/usr/bin:/bin । यदि आप जिस कमांड को कॉल कर रहे हैं वह क्रोन निर्दिष्ट पथ में मौजूद है, तो आप कमांड के लिए निरपेक्ष पथ का उपयोग कर सकते हैं या क्रोन $PATH चर को बदल सकते हैं। आप स्पष्ट रूप से संलग्न नहीं कर सकते :$PATH जैसा कि आप एक नियमित स्क्रिप्ट के साथ करेंगे। डिफ़ॉल्ट शेल /bin/sh सेट है। आप SHELL वैरिएबल को बदलकर एक अलग शेल सेट कर सकते हैं। क्रोन यूजर के होम डायरेक्टरी से कमांड को इनवाइट करता है। HOME चर को crontab में सेटिंग्स द्वारा ओवरराइड किया जा सकता है। ईमेल सूचना crontab के मालिक को भेजी जाती है। डिफ़ॉल्ट व्यवहार को अधिलेखित करने के लिए, आप उन सभी ईमेल पतों की एक सूची (अल्पविराम से अलग) के साथ MAILTO पर्यावरण चर का उपयोग कर सकते हैं, MAILTO आप ईमेल सूचनाएं प्राप्त करना चाहते हैं। यदि MAILTO परिभाषित है, लेकिन खाली ( MAILTO="" ), कोई मेल नहीं भेजा जाता है।

Crontab प्रतिबंध

सिस्टम प्रशासक नियंत्रित कर सकते हैं कि कौन से उपयोगकर्ताओं के पास /etc/cron.deny और /etc/cron.allow फ़ाइलों का उपयोग करके crontab कमांड तक पहुँच है। फ़ाइलों में उपयोगकर्ता नाम, प्रति पंक्ति एक उपयोगकर्ता नाम की एक सूची शामिल है।

डिफ़ॉल्ट रूप से केवल /etc/cron.deny फ़ाइल मौजूद है और खाली है, जिसका अर्थ है कि सभी उपयोगकर्ता crontab कमांड का उपयोग कर सकते हैं। यदि आप किसी विशिष्ट उपयोगकर्ता के लिए crontab कमांड तक पहुंच से इनकार करना चाहते हैं, तो इस फ़ाइल में उपयोगकर्ता नाम जोड़ें।

यदि /etc/cron.allow फ़ाइल केवल उन उपयोगकर्ताओं के लिए मौजूद है जो इस फ़ाइल में सूचीबद्ध हैं, तो crontab कमांड का उपयोग कर सकते हैं।

यदि कोई फ़ाइल मौजूद नहीं है, तो केवल प्रशासनिक विशेषाधिकार वाले उपयोगकर्ता ही crontab कमांड का उपयोग कर सकते हैं।

क्रोन जॉब्स उदाहरण

नीचे कुछ क्रोन जॉब के उदाहरण दिए गए हैं जो आपको दिखाएंगे कि किसी कार्य को अलग-अलग समय अवधि पर चलाने के लिए कैसे शेड्यूल किया जाए।

  • सोमवार से शुक्रवार तक हर दिन 15:00 बजे एक कमांड चलाएँ:

    0 15 * * 1-5 command

    हर 5 मिनट में एक स्क्रिप्ट चलाएं और मानक आउटपुट को dev null पुनर्निर्देशित करें, केवल मानक त्रुटि को निर्दिष्ट ई-मेल पते पर भेजा जाएगा:

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    हर सोमवार दोपहर 3 बजे दो कमांड चलाएं (कमांड के बीच ऑपरेटर && उपयोग करें):

    0 15 * * Mon command1 && command2

    हर 2 मिनट में एक PHP स्क्रिप्ट चलाएँ और फ़ाइल में आउटपुट लिखें:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    एक स्क्रिप्ट को हर दिन, हर घंटे, घंटे पर, सुबह 8 बजे से शाम 4 बजे तक चलाएं:

    00 08-16 * * * /path/to/script.sh

    प्रत्येक महीने के पहले सोमवार को सुबह 7 बजे एक स्क्रिप्ट चलाएं

    0 7 1-7 * 1 /path/to/script.sh

    हर महीने की 1 और 15 तारीख को रात 9:15 बजे एक स्क्रिप्ट चलाएँ:

    15 9 1, 15 * * /path/to/script.sh

    कस्टम HOME , MAILTO , SHELL और MAILTO चर सेट करें और हर मिनट एक कमांड चलाएं।

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

निष्कर्ष

आपने सीखा है कि एक विशिष्ट तिथि और समय पर क्रोन नौकरियों और शेड्यूल कार्यों को कैसे बनाया जाए।

यदि आपके कोई प्रश्न हैं, तो टिप्पणी छोड़ने के लिए स्वतंत्र महसूस करें।

क्रोन क्रॉस्टैब टर्मिनल