यह विस्तृत गाइड बताएगी कि लिनक्स/यूनिक्स में कार्यों को शेड्यूल करने के लिए crontab कमांड का उपयोग कैसे करें।
वीडियो गेम के अलावा कंप्यूटर का उपयोग करने का एक बड़ा फायदा यह है कि वे उबाऊ और दोहराए जाने वाले कार्यों को करने में कोई आपत्ति नहीं करते जिन्हें हम नहीं करना चाहेंगे। दैनिक बैकअप चलाने जैसे नीरस कार्यों के लिए हम उन्हें हर दिन एक निश्चित समय पर चलाने के लिए शेड्यूल करना बेहतर समझते हैं, और अपने समय का उपयोग अधिक दिलचस्प चीजों के लिए करते हैं। लिनक्स और यूनिक्स आमतौर पर डिफ़ॉल्ट रूप से "crontab" यूटिलिटी के साथ आते हैं। यह बहुत उपयोगी कमांड आपको निर्दिष्ट समय पर कार्यों को चलाने और कॉन्फ़िगर किए अनुसार दोहराने की अनुमति देती है। "crontab" का उपयोग करके शेड्यूल किया गया कार्य "cron job" कहलाता है।
crontab कमांड आपको अपने सर्वर को एक स्क्रिप्ट को किसी विशेष महीने के विशेष दिन के निर्दिष्ट मिनट पर निष्पादित करने का निर्देश देने की अनुमति देती है। यह देखने के लिए कि आपके मशीन पर कौन से क्रॉन जॉब चलाने के लिए सेटअप हैं, निम्न कमांड चलाएँ:
# crontab -l
यदि आपकी मशीन पर कुछ क्रॉन जॉब कॉन्फ़िगर हैं तो यह निम्न जैसा कुछ प्रदर्शित करेगा:
0 6 * * * /opt/scripts/backup_script.sh
उपरोक्त क्रॉनटैब कॉन्फ़िगरेशन एक क्रॉन जॉब दिखाता है जो शेल स्क्रिप्ट "backup_script" को हर दिन सुबह 6 बजे निष्पादित करता है। * का अर्थ है उस फ़ील्ड में मान के हर उदाहरण पर चलाना। इसलिए उपरोक्त उदाहरण में दिन, महीना, और सप्ताह के दिन फ़ील्ड में एक एस्टेरिस्क का अर्थ है कि स्क्रिप्ट को महीने के हर दिन, साल के हर महीने, और सप्ताह के हर दिन चलना चाहिए। पहला और दूसरा फ़ील्ड क्रॉनटैब को स्क्रिप्ट को शून्य मिनट और छह घंटे पर निष्पादित करने के लिए कहता है, जो सुबह 6 बजे है। इसलिए, यह क्रॉन जॉब कॉन्फ़िगरेशन इस तरह पढ़ा जाएगा, "स्क्रिप्ट /opt/scripts/backup_script.sh को शून्य मिनट, सुबह 6 बजे, हर दिन, हर महीने, और सप्ताह के हर दिन चलाएँ।" नीचे क्रॉनटैब कॉन्फ़िगरेशन की "एनाटॉमी" समझाई गई है।
0 6 * * * /opt/scripts/backup_script.sh | | | | | | | | | |________________ सप्ताह का दिन (रविवार=0) | | | |__________________ वर्ष का महीना | | |____________________ महीने का दिन | |______________________ दिन का घंटा |________________________ घंटे का मिनट
नए क्रॉन जॉब शेड्यूल करने या पुराने को संपादित करने के लिए निम्न कमांड निष्पादित करें:
# crontab -e
यह एक एडिटर खोलेगा जिसके साथ आप "cron jobs" जोड़, संपादित, या हटा सकते हैं। हर सोमवार दोपहर 3:45 बजे चलाने के लिए एक जॉब शेड्यूल करने के लिए इस तरह की एंट्री जोड़ें:
45 15 * * 1 /opt/scripts/script.sh
आप एक फ़ील्ड में कई एंट्री जोड़ने के लिए कॉमा का उपयोग भी कर सकते हैं। यह उपयोगी है यदि आप एक स्क्रिप्ट को दिन में तीन बार, आठ घंटे के अंतराल पर चलाना चाहते हैं। बस सुनिश्चित करें कि आप एक ही फ़ील्ड में एंट्री के बीच स्पेस न छोड़ें। आपकी "cron job" एंट्री इस तरह दिखेगी:
0 1,9,17 * 2,11 * /opt/scripts/db_backup_script.sh
उपरोक्त उदाहरण में स्क्रिप्ट "db_backup_script.sh" फरवरी और नवंबर के महीनों में हर दिन सुबह 1 बजे, 9 बजे, और शाम 5 बजे चलती है। क्रॉन जॉब के साथ आप बहुत सी अच्छी चीजें कर सकते हैं। वही दिन, महीना, और सप्ताह के दिन के लिए काम करता है। एक बार जब आप इसका आदी हो जाएँ तो निम्नलिखित आज़माएँ। क्रॉनटैब न केवल नंबर समझता है, यह कुछ बुनियादी अंग्रेजी शब्दों पर भी काम कर सकता है:
| स्ट्रिंग | व्याख्या |
|---|---|
| @reboot | एक बार चलाएँ, अगली बार जब सिस्टम रीबूट हो |
| @yearly | साल में एक बार, वर्ष की शुरुआत में चलाएँ |
| @annually | @yearly के समान, वार्षिक रूप से एक बार चलाएँ |
| @monthly | महीने में एक बार, महीने की शुरुआत में चलाएँ |
| @weekly | सप्ताह में एक बार, सप्ताह की शुरुआत में चलाएँ |
| @daily | दिन में एक बार, आधी रात को चलाएँ |
| @midnight | @daily के समान, आधी रात को चलाएँ |
| @hourly | घंटे में एक बार, घंटे की शुरुआत में चलाएँ |
इसलिए, उदाहरण के लिए, यदि आप हर रात आधी रात को एक स्क्रिप्ट चलाना चाहते हैं, तो आपका क्रॉनटैब कॉन्फ़िगरेशन इस तरह दिखेगा:
@midnight /opt/scripts/script.sh
"0 0 * * *" के बजाय "@midnight" का उपयोग करने से वही काम होगा और अनुरोधित स्क्रिप्ट को हर रात आधी रात को निष्पादित करेगा जबकि इसके संख्यात्मक समकक्ष की तुलना में बहुत अधिक पठनीय होगा। आप एक रेंज घोषित करने के लिए हाइफ़न का उपयोग भी कर सकते हैं। नीचे दिए गए कमांड में "script.sh" सुबह 1 बजे से सुबह 6 बजे तक हर घंटे की शुरुआत में निष्पादित होगा:
0 1-6 * * * /opt/scripts/script.sh
क्रॉन के साथ आप और भी कई अच्छी चीजें कर सकते हैं। हर सिसएडमिन इसकी कसम खाता है, एक बार जब आप इसका आदी हो जाते हैं तो यह उपयोग करने में काफी आसान होता है, और बहुत शक्तिशाली होता है। इस उपकरण का बुद्धिमानी से उपयोग करें, क्योंकि गलत तरीके से शेड्यूल किया गया कार्य कभी-कभी बहुत नुकसान पहुंचा सकता है। क्रॉनटैब के "मैन पेज" को पढ़ना अत्यधिक अनुशंसित होगा। at कमांड के बारे में सीखना भी उचित है, क्योंकि इसका उपयोग कमांड शेड्यूल करने के लिए भी किया जाता है।
आधुनिक विकल्प: systemd टाइमर्स
आधुनिक लिनक्स वितरण (systemd का उपयोग करने वाले) में, systemd टाइमर्स क्रॉन जॉब के लिए एक अधिक शक्तिशाली और लचीला विकल्प प्रदान करते हैं। वे बेहतर लॉगिंग, निर्भरता प्रबंधन, और मिस्ड जॉब को पकड़ने की क्षमता प्रदान करते हैं। एक systemd टाइमर यूनिट बनाने में दो फाइलें शामिल होती हैं: एक .service यूनिट (क्या चलाना है) और एक .timer यूनिट (कब चलाना है)।