क्रोन सभी लिनक्स डिस्ट्रोस सहित यूनिक्स-आधारित सिस्टम के लिए एक कार्य शेड्यूलर है। क्रॉन डेमॉन आपके होस्ट पर बैकग्राउंड में काम करता है और शेड्यूल के अनुसार शेड्यूल किए गए टास्क को चलाता है। इस लेख में, हम दिखाएंगे कि cron . कैसे स्थापित करें CentOS या RHEL Linux चलाने वाले सर्वर पर, क्रॉन सिंटैक्स सीखें, और क्रॉन्टाब के साथ क्रॉन जॉब शेड्यूल करें।
Cron को Centos या RHEL Linux पर कैसे स्थापित करें?
डिफ़ॉल्ट रूप से, क्रॉन आरएचईएल या सेंटोस इंस्टालेशन के तुरंत बाद उपलब्ध है। यदि आपके पास किसी कारण से यह नहीं है, तो आप इसे yum या dnf कमांड का उपयोग करके बेस रिपॉजिटरी से इंस्टॉल कर सकते हैं:
# dnf update -y
— होस्ट पर सभी पैकेज अपडेट करने के लिए# dnf install crontabs -y
— क्रॉन स्थापित करने के लिए
क्रॉन्ड डेमॉन को सक्षम करें और इंस्टालेशन के बाद इसे चलाएं:
# systemctl enable crond.service
# systemctl start crond.service
क्रोनटैब के साथ क्रॉन जॉब्स कैसे जोड़ें?
क्रॉन में कार्यों को जोड़ने के लिए आप निम्न कमांड का उपयोग कर सकते हैं:
# crontab -e
यह आदेश आपके उपयोगकर्ता के लिए एक डिफ़ॉल्ट टेक्स्ट एडिटर में एक कार्य फ़ाइल खोलेगा (यह vim . है) मेरे मामले में, लेकिन आप इसे अपने लिए अधिक सुविधाजनक में बदल सकते हैं, उदाहरण के लिए, नैनो ) कार्यों को कॉन्फ़िगर करने की यह विधि सिंटैक्स त्रुटियों को रोकती है। Crontab त्रुटियों वाली कॉन्फ़िगरेशन फ़ाइल को सहेजने की अनुमति नहीं देता है।
आप क्रॉन जॉब्स फ़ाइल को मैन्युअल रूप से mc में संपादित भी कर सकते हैं:
# mcedit /var/spool/cron/root
- उपयोगकर्ता के आधार पर फ़ाइल का नाम भिन्न हो सकता है।
क्रॉन में बैश स्क्रिप्ट चलाने वाली एक साधारण नौकरी जोड़ने के लिए, यह कमांड दर्ज करें:
# crontab -e
फिर कार्य शेड्यूल और स्क्रिप्ट फ़ाइल में पथ जोड़ें:
* * * * * /root/test.sh
फ़ाइल को सहेजें (यह विम में संपादन के समान है:Ctrl+O press दबाएं फ़ाइल सहेजने के लिए और Ctrl+X बाहर निकलने के लिए)।
यदि आपने इसे सही ढंग से किया है, तो आपका कार्य क्रॉन में जुड़ जाएगा। क्रॉन जॉब्स की सूची प्रदर्शित करने के लिए, निम्न कमांड चलाएँ:
# cat /var/spool/cron/root
* * * * * /root/test.sh
या यह एक:
# crontab -l
यह स्क्रिप्ट हर मिनट क्रॉन से चलेगी।
न्यूनतम समय 1 मिनट है। क्रोन डेमॉन एक मिनट में एक बार कार्यों की सूची को स्कैन करता है। यह निम्नलिखित फाइलों और निर्देशिकाओं की जांच करता है:/etc/crontab/etc/cron.*/./var/spool/cron/
प्रत्येक क्रॉस्टैब शेड्यूल प्रविष्टि में 5 फ़ील्ड होते हैं:
<पूर्व>मिनट घंटे दिन_of_a_माह महीने सप्ताह_दिन# कार्य परिभाषा का उदाहरण:# .---------------- मिनट (0 - 59)# | .------------- घंटा (0 - 23)# | | .---------- महीने का दिन (1 - 31)# | | | .---------- माह (1-12) या जनवरी,फरवरी,मार्च,अप्रैल ...# | | | | .---- सप्ताह का दिन (0 - 6) (रविवार =0 या 7) या सूर्य, सोम, मंगल, बुध, गुरु, शुक्र, शनि# | | | | |# * * * * * उपयोगकर्ता-नाम कमांड निष्पादित किया जाना है
आप प्रत्येक फ़ील्ड के लिए निम्नलिखित मान्य मानों का उपयोग कर सकते हैं:
फ़ील्ड | मान सीमा |
मिनट | 0-59 |
घंटे | 0-23 |
महीने का दिन | 1-31 |
माह | 1-12 या jan feb mar apr may jun jul aug sep oct nov dec |
सप्ताह का दिन | 0-6 (जहां 0 रविवार है) या sun mon tue wed thu fri sat |
*
चरित्र का अर्थ है सभी अनुमत मान। यहाँ एक नमूना कार्य है:
30 00 * * 1 /root/test.sh
टास्क में स्क्रिप्ट हर सोमवार को सुबह 00:30 बजे चलाई जाएगी।
क्रॉन फ़ाइल सिंटैक्स को आसान बनाने के लिए, कुछ विशेष वर्णों का उपयोग किया जाता है:
- एक अल्पविराम (,) एक ही कार्य को अलग-अलग समय पर चलाने के लिए शेड्यूल मानों को अलग करने के लिए उपयोग किया जाता है। उदाहरण के लिए, यदि आप किसी कार्य को प्रत्येक घंटे के 15वें और 30वें मिनट में चलाना चाहते हैं, तो आप इस प्रकार शेड्यूल सेट कर सकते हैं:
15 * * * *30 * * * *
या अल्पविराम के साथ छोटे सिंटैक्स का उपयोग करें:
15,30 * * * *
- एक स्लैश (/) किसी कार्य को दोहराने के लिए प्रयोग किया जाता है। उदाहरण के लिए, आप हर 2 घंटे में एक कार्य चलाना चाहते हैं। / का उपयोग करने से क्रॉन फ़ाइल की सामग्री बहुत छोटी हो जाएगी, अन्यथा, यह काफी लंबी है:
* */2 * * *
- एक हाइफ़न (-) एक क्षेत्र में मूल्यों की सीमा को इंगित करता है। यदि आप किसी कार्य को घंटे के पहले या अंतिम 10 मिनट के लिए चलाना चाहते हैं, तो हाइफ़न का उपयोग करके श्रेणी निर्दिष्ट करें:
0-10 * * * *50-60 * * * *
क्रॉन शेड्यूल के कुछ और उदाहरण यहां दिए गए हैं:
- सप्ताह के दिनों में दोपहर 12:00 बजे और शाम 06:00 बजे चलने के लिए:
0 12,18 * * 1-5
- हर 30 मिनट में:
*/30 * * * *
- प्रत्येक शनिवार:
0 0 * * 6
- हर मंगलवार और गुरुवार सुबह 02:00 बजे:
0 2 * * 2,4
आप क्रॉन में विशेष चर का भी उपयोग कर सकते हैं।
परिवर्तनीय | विवरण | वाक्यविन्यास |
@reboot | बूट होने पर एक बार चलता है | |
@yearly
या
| वर्ष में एक बार | 0 0 1 1 * |
@monthly | महीने में एक बार | 0 0 1 * * |
@weekly | सप्ताह में एक बार | 0 0 * * 0 |
@daily | हर दिन | 0 0 * * * |
@hourly | हर घंटे | 0 * * * * |
@midnight | आधी रात को |
इसका मतलब है कि हर दिन किसी कार्य को चलाने के लिए, आप निम्न क्रॉन सिंटैक्स का उपयोग कर सकते हैं:
@daily echo "Cron check"
आप किसी अन्य उपयोगकर्ता की crontab फ़ाइल संपादित कर सकते हैं:
# crontab -u username
ईमेल पर क्रॉन सूचनाएं कैसे भेजें?
यदि आप ईमेल द्वारा अपने क्रॉस्टैब कार्यों को चलाने के बारे में जानकारी प्राप्त करना चाहते हैं, तो आपको क्रॉन फ़ाइल को नौकरी के साथ कॉन्फ़िगर करने की आवश्यकता है।
ईमेल भेजने के लिए, आपके सर्वर पर एक मेल एजेंट स्थापित होना चाहिए। एक परीक्षण करने के लिए, मैंने sendmail installed स्थापित किया है मेरे Linux होस्ट पर:
# dnf install sendmail -y
# service sendmail start
क्रॉन फ़ाइल में ईमेल भेजने के लिए मापदंडों को कॉन्फ़िगर करें। फ़ाइल में निम्न पंक्तियाँ जोड़ें:
MAILTO="[email protected]"SHELL=/bin/bashHOME=/* * * * * इको "क्रॉन चेक"
SHELL - एक उपयोगकर्ता शेल
होम — क्रॉन फ़ाइल का पथ
हर बार जब कोई क्रॉन जॉब शुरू होता है, तो आपके मेलबॉक्स पर एक ईमेल सूचना भेजी जाएगी।
आप क्रॉन कार्य को लॉग फ़ाइल में चलाने के बारे में जानकारी सहेज सकते हैं। ऐसा करने के लिए, >>
जोड़ें फ़ाइल के अंत तक और अपनी लॉग फ़ाइल के लिए पथ दर्ज करें:
* * * * * echo "Cron check" >> /var/log/admin/journal.log
यदि आपकी crontab फ़ाइल में कई कार्य हैं, और आप उनमें से कुछ के परिणाम ईमेल द्वारा प्राप्त नहीं करना चाहते हैं, तो आप इन नौकरियों को साइलेंट मोड में चला सकते हैं:
* * * * * echo "Cron check" >> /dev/null 2>&1
क्रॉन कॉन्फ़िगरेशन फ़ाइलें और लॉग
मुख्य क्रॉन कॉन्फ़िगरेशन फ़ाइल /etc/crontab. क्रॉन फ़ाइल के अलावा, आप निम्न निर्देशिकाओं से कार्य चला सकते हैं:
- /etc/cron.daily - दिन में एक बार स्क्रिप्ट शुरू करने के लिए
- /etc/cron.hourly - …. घंटे में एक बार
- /etc/cron.monthly -…. महीने में एक बार
- /etc/cron.weekly –…. सप्ताह में एक बार
शेड्यूल के अनुसार चलाने के लिए बस किसी एक निर्देशिका में स्क्रिप्ट फ़ाइल डालें।
आप /etc/cron.allow और /etc/cron.deny का उपयोग करके शेड्यूलर तक पहुंच को प्रतिबंधित कर सकते हैं। इन फ़ाइलों को बनाने और उन उपयोगकर्ताओं को जोड़ने के लिए पर्याप्त है, जिन्हें क्रॉन कार्यों को चलाने की अनुमति है या इनकार किया गया है।
आप /etc/crontab . में जॉब जोड़ सकते हैं भी। आमतौर पर, फ़ाइल का उपयोग रूट उपयोगकर्ता द्वारा या सिस्टम कार्यों को कॉन्फ़िगर करने के लिए किया जाता है। क्रॉन जॉब्स की व्यक्तिगत उपयोगकर्ता फाइलें /var/spool/cron/ . में संग्रहित की जाती हैं या /var/cron/tabs/ ।
क्रॉन जॉब्स या त्रुटियों को ट्रैक करने के लिए, आप लॉग फ़ाइल देख सकते हैं:/var/log/cron . यह फ़ाइल डेमॉन ऑपरेशन में सभी कार्यों और त्रुटियों को रिकॉर्ड करती है, यदि कोई हो: