एक अनुभवी लिनक्स सिसएडमिन पृष्ठभूमि में नियमित रखरखाव कार्यों को स्वचालित रूप से चलाने के महत्व को जानता है।
लिनक्स क्रॉन यूटिलिटी एक विशिष्ट समय और/या दिन पर निरंतर आधार पर नियमित पृष्ठभूमि कार्य को शेड्यूल करने का एक प्रभावी तरीका है।
यह लेख गीक्स के लिए उत्पादकता टिप्स श्रृंखला का हिस्सा है। इस लेख में, आइए क्रॉनटैब जॉब शेड्यूलिंग के 15 बहुत बढ़िया उदाहरणों की समीक्षा करें।
लिनक्स क्रॉनटैब प्रारूप
MIN HOUR DOM MON DOW CMD
| फील्ड | विवरण | अनुमत मान |
|---|---|---|
| MIN | मिनट फील्ड | 0 से 59 |
| HOUR | घंटा फील्ड | 0 से 23 |
| DOM | महीने का दिन | 1-31 |
| MON | महीना फील्ड | 1-12 |
| DOW | सप्ताह का दिन | 0-6 |
| CMD | कमांड | निष्पादित की जाने वाली कोई भी कमांड |
1. एक विशिष्ट समय के लिए जॉब शेड्यूल करना
क्रॉन का मूल उपयोग नीचे दिखाए अनुसार एक विशिष्ट समय में जॉब निष्पादित करना है। यह फुल बैकअप शेल स्क्रिप्ट (full-backup) को 10 जून सुबह 08:30 बजे निष्पादित करेगा।
कृपया ध्यान दें कि समय फील्ड 24 घंटे के प्रारूप का उपयोग करता है। इसलिए, सुबह 8 बजे के लिए 8 का उपयोग करें, और शाम 8 बजे के लिए 20 का उपयोग करें।
30 08 10 06 * /home/ramesh/full-backup
- 30 – 30वां मिनट
- 08 – सुबह 08 बजे
- 10 – 10वां दिन
- 06 – 6वां महीना (जून)
- * – सप्ताह का हर दिन
2. एक से अधिक उदाहरण के लिए जॉब शेड्यूल करें (उदाहरण के लिए दिन में दो बार)
निम्नलिखित स्क्रिप्ट हर दिन दिन में दो बार इनक्रीमेंटल बैकअप लेती है।
यह उदाहरण निर्दिष्ट इनक्रीमेंटल बैकअप शेल स्क्रिप्ट (incremental-backup) को हर दिन 11:00 और 16:00 पर निष्पादित करता है। एक फील्ड में कॉमा से अलग मान निर्दिष्ट करता है कि कमांड को उल्लिखित सभी समय पर निष्पादित करने की आवश्यकता है।
00 11,16 * * * /home/ramesh/bin/incremental-backup
- 00 – 0वां मिनट (घंटे की शुरुआत)
- 11,16 – सुबह 11 बजे और शाम 4 बजे
- * – हर दिन
- * – हर महीना
- * – सप्ताह का हर दिन
3. समय की विशिष्ट सीमा के लिए जॉब शेड्यूल करें (उदाहरण के लिए केवल सप्ताह के दिनों में)
यदि आप किसी जॉब को समय की एक विशिष्ट सीमा के भीतर हर घंटे शेड्यूल करना चाहते हैं तो निम्नलिखित का उपयोग करें।
काम के घंटों के दौरान हर दिन क्रॉन जॉब
यह उदाहरण काम के घंटों सुबह 9 बजे - शाम 6 बजे के दौरान हर दिन (सप्ताहांत सहित) डेटाबेस की स्थिति की जांच करता है।
00 09-18 * * * /home/ramesh/bin/check-db-status
- 00 – 0वां मिनट (घंटे की शुरुआत)
- 09-18 – सुबह 9 बजे, 10 बजे, 11 बजे, दोपहर 12 बजे, दोपहर 1 बजे, 2 बजे, 3 बजे, 4 बजे, 5 बजे, शाम 6 बजे
- * – हर दिन
- * – हर महीना
- * – सप्ताह का हर दिन
काम के घंटों के दौरान हर सप्ताह के दिन क्रॉन जॉब
यह उदाहरण काम के घंटों सुबह 9 बजे - शाम 6 बजे के दौरान हर सप्ताह के दिन (यानी शनि और रविवार को छोड़कर) डेटाबेस की स्थिति की जांच करता है।
00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
- 00 – 0वां मिनट (घंटे की शुरुआत)
- 09-18 – सुबह 9 बजे, 10 बजे, 11 बजे, दोपहर 12 बजे, दोपहर 1 बजे, 2 बजे, 3 बजे, 4 बजे, 5 बजे, शाम 6 बजे
- * – हर दिन
- * – हर महीना
- 1-5 -सोम, मंगल, बुध, गुरु और शुक्र (हर सप्ताह का दिन)
4. क्रॉनटैब एंट्री कैसे देखें?
वर्तमान लॉग-इन उपयोगकर्ता के क्रॉनटैब एंट्री देखें
अपने क्रॉनटैब एंट्री देखने के लिए, अपने यूनिक्स खाते से crontab -l टाइप करें जैसा कि नीचे दिखाया गया है।
ramesh@dev-db$ crontab -l @yearly /home/ramesh/annual-maintenance */10 * * * * /home/ramesh/check-disk-space [नोट: यह वर्तमान लॉग इन उपयोगकर्ता का क्रॉनटैब प्रदर्शित करता है]
रूट क्रॉनटैब एंट्री देखें
रूट उपयोगकर्ता के रूप में लॉगिन करें (su – root) और नीचे दिखाए अनुसार crontab -l करें।
root@dev-db# crontab -l no crontab for root
क्रॉनटैब कैसे करें: अन्य लिनक्स उपयोगकर्ता के क्रॉनटैब एंट्री देखें
अन्य लिनक्स उपयोगकर्ताओं के क्रॉनटैब एंट्री देखने के लिए, रूट पर लॉगिन करें और -u {username} -l का उपयोग करें जैसा कि नीचे दिखाया गया है।
root@dev-db# crontab -u sathiya -l @monthly /home/sathiya/monthly-backup 00 09-18 * * * /home/sathiya/check-db-status
5. क्रॉनटैब एंट्री कैसे संपादित करें?
वर्तमान लॉग-इन उपयोगकर्ता के क्रॉनटैब एंट्री संपादित करें
क्रॉनटैब एंट्री संपादित करने के लिए, नीचे दिखाए अनुसार crontab -e का उपयोग करें। डिफ़ॉल्ट रूप से यह वर्तमान लॉग-इन उपयोगकर्ता के क्रॉनटैब को संपादित करेगा।
ramesh@dev-db$ crontab -e @yearly /home/ramesh/centos/bin/annual-maintenance */10 * * * * /home/ramesh/debian/bin/check-disk-space ~ "/tmp/crontab.XXXXyjWkHw" 2L, 83C [नोट: यह संपादन के लिए Vim एडिटर में क्रॉनटैब फ़ाइल खोलेगा। कृपया ध्यान दें क्रॉन ने एक अस्थायी /tmp/crontab.XX... बनाया]
जब आप उपरोक्त अस्थायी फ़ाइल को :wq के साथ सहेजते हैं, तो यह क्रॉनटैब को सहेजेगा और निम्न संदेश प्रदर्शित करेगा जो दर्शाता है कि क्रॉनटैब सफलतापूर्वक संशोधित हो गया है।
~ "crontab.XXXXyjWkHw" 2L, 83C written crontab: installing new crontab
रूट क्रॉनटैब एंट्री संपादित करें
रूट उपयोगकर्ता के रूप में लॉगिन करें (su – root) और नीचे दिखाए अनुसार crontab -e करें।
root@dev-db# crontab -e
अन्य लिनक्स उपयोगकर्ता के क्रॉनटैब फ़ाइल एंट्री संपादित करें
अन्य लिनक्स उपयोगकर्ताओं के क्रॉनटैब एंट्री संपादित करने के लिए, रूट पर लॉगिन करें और -u {username} -e का उपयोग करें जैसा कि नीचे दिखाया गया है।
root@dev-db# crontab -u sathiya -e @monthly /home/sathiya/fedora/bin/monthly-backup 00 09-18 * * * /home/sathiya/ubuntu/bin/check-db-status ~ ~ ~ "/tmp/crontab.XXXXyjWkHw" 2L, 83C
6. क्रॉन का उपयोग करके हर मिनट जॉब शेड्यूल करें।
आदर्श रूप से आपके पास हर मिनट जॉब शेड्यूल करने की आवश्यकता नहीं हो सकती। लेकिन इस उदाहरण को समझने से आपको इस लेख में नीचे उल्लिखित अन्य उदाहरणों को समझने में मदद मिलेगी।
* * * * * CMD
* का अर्थ है सभी संभावित इकाई — यानी पूरे वर्ष में हर घंटे के हर मिनट। सीधे इस * का उपयोग करने से अधिक, आप इसे निम्नलिखित मामलों में बहुत उपयोगी पाएंगे।
- जब आप मिनट फील्ड में */5 निर्दिष्ट करते हैं तो इसका मतलब हर 5 मिनट होता है।
- जब आप मिनट फील्ड में 0-10/2 निर्दिष्ट करते हैं तो इसका मतलब पहले 10 मिनट में हर 2 मिनट होता है।
- इस प्रकार उपरोक्त कन्वेंशन अन्य सभी 4 फील्ड के लिए उपयोग किया जा सकता है।
7. हर 10 मिनट में पृष्ठभूमि क्रॉन जॉब शेड्यूल करें।
यदि आप हर 10 मिनट में डिस्क स्पेस जांचना चाहते हैं तो निम्नलिखित का उपयोग करें।
*/10 * * * * /home/ramesh/check-disk-space
यह निर्दिष्ट कमांड check-disk-space को पूरे वर्ष हर 10 मिनट में निष्पादित करता है। लेकिन आपके पास कमांड को केवल कार्यालय समय के दौरान या इसके विपरीत निष्पादित करने की आवश्यकता हो सकती है। उपरोक्त उदाहरण दिखाते हैं कि उन चीजों को कैसे करना है।
5 फील्ड में मान निर्दिष्ट करने के बजाय, हम इसे नीचे उल्लिखित एक कीवर्ड का उपयोग करके एकल कीवर्ड के रूप में निर्दिष्ट कर सकते हैं।
विशेष मामले हैं जिनमें उपरोक्त 5 फील्ड के बजाय आप @ के बाद एक कीवर्ड का उपयोग कर सकते हैं — जैसे reboot, midnight, yearly, hourly।
| कीवर्ड | समतुल्य |
|---|---|
| @yearly | 0 0 1 1 * |
| @daily | 0 0 * * * |
| @hourly | 0 * * * * |
| @reboot | स्टार्टअप पर चलाएं। |
8. @yearly का उपयोग करके हर साल के पहले मिनट के लिए जॉब शेड्यूल करें
यदि आप चाहते हैं कि जॉब हर साल के पहले मिनट पर निष्पादित हो, तो आप नीचे दिखाए अनुसार @yearly क्रॉन कीवर्ड का उपयोग कर सकते हैं।
यह सिस्टम वार्षिक रखरखाव को annual-maintenance शेल स्क्रिप्ट का उपयोग करके हर साल 1 जनवरी को 00:00 पर निष्पादित करेगा।
@yearly /home/ramesh/red-hat/bin/annual-maintenance
9. @monthly का उपयोग करके हर महीने की शुरुआत में क्रॉन जॉब शेड्यूल करें
यह ऊपर @yearly के समान है। लेकिन @monthly क्रॉन कीवर्ड का उपयोग करके कमांड को मासिक रूप से एक बार निष्पादित करता है।
यह शेल स्क्रिप्ट tape-backup को हर महीने की 1 तारीख को 00:00 पर निष्पादित करेगा।
@monthly /home/ramesh/suse/bin/tape-backup
10. @daily का उपयोग करके हर दिन पृष्ठभूमि जॉब शेड्यूल करें
@daily क्रॉन कीवर्ड का उपयोग करके, यह cleanup-logs शेल स्क्रिप्ट का उपयोग करके हर दिन 00:00 पर दैनिक लॉग फ़ाइल सफाई करेगा।
@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"
11. @reboot का उपयोग करके हर रीबूट के बाद लिनक्स कमांड कैसे निष्पादित करें?
@reboot क्रॉन कीवर्ड का उपयोग करके, यह मशीन के हर बार बूट होने के बाद निर्दिष्ट कमांड को एक बार निष्पादित करेगा।
@reboot CMD
12. MAIL कीवर्ड का उपयोग करके क्रॉनटैब मेल आउटपुट को कैसे अक्षम/रीडायरेक्ट करें?
डिफ़ॉल्ट रूप से क्रॉनटैब जॉब आउटपुट को उस उपयोगकर्ता को भेजता है जिसने जॉब शेड्यूल किया था। यदि आप आउटपुट को किसी विशिष्ट उपयोगकर्ता को रीडायरेक्ट करना चाहते हैं, तो क्रॉनटैब में MAIL वेरिएबल को जोड़ें या अपडेट करें जैसा कि नीचे दिखाया गया है।
ramesh@dev-db$ crontab -l MAIL="ramesh" @yearly /home/ramesh/annual-maintenance */10 * * * * /home/ramesh/check-disk-space [नोट: MAIL वेरिएबल के साथ वर्तमान लॉग इन उपयोगकर्ता का क्रॉनटैब]
यदि आप चाहते हैं कि मेल कहीं न भेजा जाए, यानी क्रॉनटैब आउटपुट को ईमेल होने से रोकने के लिए, क्रॉनटैब में MAIL वेरिएबल को जोड़ें या अपडेट करें जैसा कि नीचे दिखाया गया है।
MAIL=""
13. लिनक्स क्रॉन जॉब को हर सेकंड क्रॉनटैब का उपयोग करके कैसे निष्पादित करें।
आप हर-सेकंड क्रॉनजॉब शेड्यूल नहीं कर सकते। क्योंकि क्रॉन में आप जो न्यूनतम इकाई निर्दिष्ट कर सकते हैं वह मिनट है। एक सामान्य परिदृश्य में, हम में से अधिकांश के लिए सिस्टम में हर सेकंड कोई जॉब चलाने का कोई कारण नहीं है।
14. क्रॉनटैब में PATH वेरिएबल निर्दिष्ट करें
उपरोक्त सभी उदाहरणों में हमने लिनक्स कमांड या शेल-स्क्रिप्ट का पूर्ण पथ निर्दिष्ट किया है जिसे निष्पादित करने की आवश्यकता है।
उदाहरण के लिए, /home/ramesh/tape-backup निर्दिष्ट करने के बजाय, यदि आप केवल tape-backup निर्दिष्ट करना चाहते हैं, तो क्रॉनटैब में PATH वेरिएबल में पथ /home/ramesh जोड़ें जैसा कि नीचे दिखाया गया है।
ramesh@dev-db$ crontab -l PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh @yearly annual-maintenance */10 * * * * check-disk-space [नोट: PATH वेरिएबल के साथ वर्तमान लॉग इन उपयोगकर्ता का क्रॉनटैब]
15. क्रॉन फ़ाइल से क्रॉनटैब इंस्टॉल करना
सीधे क्रॉनटैब फ़ाइल संपादित करने के बजाय, आप पहले सभी एंट्री को एक क्रॉन-फ़ाइल में भी जोड़ सकते हैं। एक बार जब आपके पास फ़ाइल में वे सभी एंट्री हों, तो आप उन्हें नीचे दिखाए अनुसार क्रॉन पर अपलोड या इंस्टॉल कर सकते हैं।
ramesh@dev-db$ crontab -l no crontab for ramesh $ cat cron-file.txt @yearly /home/ramesh/annual-maintenance */10 * * * * /home/ramesh/check-disk-space ramesh@dev-db$ crontab cron-file.txt ramesh@dev-db$ crontab -l @yearly /home/ramesh/annual-maintenance */10 * * * * /home/ramesh/check-disk-space
नोट: यह cron-file.txt को आपके क्रॉनटैब पर इंस्टॉल करेगा, जो आपके पुराने क्रॉन एंट्री को भी हटा देगा। इसलिए, कृपया क्रॉन-फ़ाइल.txt से क्रॉन एंट्री अपलोड करते समय सावधान रहें।
अतिरिक्त क्रॉन ट्यूटोरियल
- क्रॉन बनाम एनाक्रॉन: लिनक्स पर एनाक्रॉन कैसे सेटअप करें (एक उदाहरण के साथ)
- क्रॉन को हर 5 मिनट, सेकंड, घंटे, दिन, महीने कैसे चलाएं
- 6 लिनक्स क्रॉनटैब कमांड उदाहरण
- बैच मोड में क्रॉन जॉब कैसे इंस्टॉल, संपादित, या हटाएं
- 9 उदाहरणों का उपयोग करके at, atq, atrm, बैच कमांड को समझें
बहुत बढ़िया लिनक्स लेख
निम्नलिखित कुछ बहुत बढ़िया 15 उदाहरण लेख हैं जो आपको उपयोगी लग सकते हैं।
- मम्मी, मुझे मिल गया! — 15 व्यावहारिक लिनक्स फाइंड कमांड उदाहरण
- लिनक्स कमांड लाइन इतिहास मास्टर करने के लिए 15 उदाहरण
- यूनिक्स LS कमांड: 15 व्यावहारिक उदाहरण
- ग्रेप पर पकड़ बनाएं! – 15 व्यावहारिक ग्रेप कमांड उदाहरण