Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

मास्टर लिनक्स क्रोंटैब:15 विशेषज्ञ क्रॉन जॉब शेड्यूलिंग उदाहरण

<पी> मास्टर लिनक्स क्रोंटैब:15 विशेषज्ञ क्रॉन जॉब शेड्यूलिंग उदाहरण एक अनुभवी Linux sysadmin नियमित रखरखाव कार्यों को पृष्ठभूमि में स्वचालित रूप से चलाने के महत्व को जानता है।

लिनक्स क्रॉन उपयोगिता नियमित आधार पर किसी विशिष्ट समय और/या दिन पर नियमित पृष्ठभूमि कार्य को शेड्यूल करने का एक प्रभावी तरीका है।

यह लेख गीक्स श्रृंखला के लिए चल रही उत्पादकता युक्तियाँ का हिस्सा है। इस लेख में, आइए क्रोंटैब जॉब शेड्यूलिंग के 15 अद्भुत उदाहरणों की समीक्षा करें।

लिनक्स क्रोंटैब प्रारूप

MIN HOUR DOM MON DOW CMD
फ़ील्ड विवरण अनुमत मान मिनट फ़ील्ड0 से 59घंटाघंटा फ़ील्ड0 से 23DOMमाह का दिन1-31MONमाह फ़ील्ड1-12DOWसप्ताह का दिन0-6CMDकमांडकोई भी आदेश निष्पादित किया जाना है।

1. किसी विशिष्ट समय के लिए कार्य शेड्यूल करना

<पी> क्रॉन का मूल उपयोग किसी कार्य को एक विशिष्ट समय में निष्पादित करना है जैसा कि नीचे दिखाया गया है। यह 10 जून 08:30 पूर्वाह्न को पूर्ण बैकअप शेल स्क्रिप्ट (पूर्ण-बैकअप) निष्पादित करेगा। .

कृपया ध्यान दें कि समय फ़ील्ड 24 घंटे के प्रारूप का उपयोग करता है। तो, सुबह 8 बजे के लिए 8 का उपयोग करें, और रात 8 बजे के लिए 20 का उपयोग करें।

30 08 10 06 * /home/ramesh/full-backup
  • 30 – 30वां मिनट
  • 08 – सुबह 08 बजे
  • 10 – 10वां दिन
  • 06 – छठा महीना (जून)
  • * – सप्ताह का हर दिन

2. किसी कार्य को एक से अधिक बार (जैसे दिन में दो बार) के लिए शेड्यूल करें

<पी> निम्नलिखित स्क्रिप्ट हर दिन दिन में दो बार वृद्धिशील बैकअप लेती है।

यह उदाहरण प्रत्येक दिन 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 प्रविष्टियाँ देखने के लिए अपने यूनिक्स खाते से crontab -l टाइप करें जैसा कि नीचे दिखाया गया है।

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
[Note: This displays crontab of the current logged in user]

रूट क्रोनटैब प्रविष्टियाँ देखें

<पी> रूट उपयोगकर्ता (सु-रूट) के रूप में लॉगिन करें और नीचे दिखाए अनुसार crontab -l करें।

root@dev-db# crontab -l
no crontab for root

क्रोंटैब कैसे करें:अन्य लिनक्स उपयोगकर्ता की क्रोंटैब प्रविष्टियाँ देखें

<पी> अन्य Linux उपयोगकर्ताओं की crontab प्रविष्टियाँ देखने के लिए, रूट में लॉग इन करें और -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 प्रविष्टियों को संपादित करने के लिए, crontab -e का उपयोग करें जैसा कि नीचे दिखाया गया है। डिफ़ॉल्ट रूप से यह वर्तमान लॉग-इन उपयोगकर्ताओं crontab को संपादित करेगा।

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
[Note: This will open the crontab file in Vim editor for editing.
Please note cron created a temporary /tmp/crontab.XX... ]
<पी> जब आप उपरोक्त अस्थायी फ़ाइल को :wq के साथ सहेजते हैं, तो यह crontab को सहेज लेगा और निम्न संदेश प्रदर्शित करेगा जो दर्शाता है कि crontab सफलतापूर्वक संशोधित हो गया है।

~
"crontab.XXXXyjWkHw" 2L, 83C written
crontab: installing new crontab

रूट क्रोनटैब प्रविष्टियाँ संपादित करें

<पी> रूट उपयोगकर्ता (su - रूट) के रूप में लॉगिन करें और crontab -e करें जैसा कि नीचे दिखाया गया है।

root@dev-db# crontab -e

अन्य लिनक्स उपयोगकर्ता की क्रोंटैब फ़ाइल प्रविष्टियाँ संपादित करें

<पी> अन्य Linux उपयोगकर्ताओं की crontab प्रविष्टियों को संपादित करने के लिए, रूट में लॉगिन करें और -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
<पी> यह पूरे वर्ष में हर 10 मिनट में निर्दिष्ट कमांड चेक-डिस्क-स्पेस निष्पादित करता है। लेकिन आपको केवल कार्यालय समय के दौरान या इसके विपरीत आदेश निष्पादित करने की आवश्यकता हो सकती है। उपरोक्त उदाहरण बताते हैं कि उन चीज़ों को कैसे करना है।

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

ऐसे विशेष मामले हैं जिनमें उपरोक्त 5 फ़ील्ड के बजाय आप एक कीवर्ड के बाद @ का उपयोग कर सकते हैं - जैसे रीबूट, आधी रात, वार्षिक, प्रति घंटा।

कीवर्ड समतुल्य @yearly0 0 1 1 *@daily0 0 * * *@hourly0* * * *@rebootRun स्टार्टअप पर।

8. @yearly

का उपयोग करके प्रत्येक वर्ष के पहले मिनट के लिए कार्य शेड्यूल करें <पी> यदि आप चाहते हैं कि कोई कार्य प्रत्येक वर्ष के पहले मिनट में निष्पादित हो जाए, तो आप @yearly का उपयोग कर सकते हैं क्रॉन कीवर्ड जैसा कि नीचे दिखाया गया है।

यह प्रत्येक वर्ष के लिए 1 जनवरी को 00:00 बजे वार्षिक-रखरखाव शेल स्क्रिप्ट का उपयोग करके सिस्टम वार्षिक रखरखाव निष्पादित करेगा।

@yearly /home/ramesh/red-hat/bin/annual-maintenance

9. @मासिक

का उपयोग करके हर महीने की शुरुआत में क्रॉन जॉब शेड्यूल करें <पी> यह उपरोक्त @yearly के समान है। लेकिन @monthly का उपयोग करके मासिक रूप से एक बार कमांड निष्पादित करता है क्रॉन कीवर्ड.

यह हर महीने की पहली तारीख को 00:00 बजे शेल स्क्रिप्ट टेप-बैकअप निष्पादित करेगा।

@monthly /home/ramesh/suse/bin/tape-backup

10. @daily

का उपयोग करके हर दिन एक पृष्ठभूमि कार्य शेड्यूल करें <पी> @दैनिकका उपयोग करना क्रॉन कीवर्ड, यह प्रत्येक दिन 00:00 बजे क्लीनअप-लॉग शेल स्क्रिप्ट का उपयोग करके दैनिक लॉग फ़ाइल क्लीनअप करेगा।

@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11. @reboot का उपयोग करके प्रत्येक रीबूट के बाद लिनक्स कमांड कैसे निष्पादित करें?

<पी> @reboot का उपयोग करना क्रॉन कीवर्ड, यह हर बार मशीन बूट होने के बाद एक बार निर्दिष्ट कमांड निष्पादित करेगा।

@reboot CMD

12. MAIL कीवर्ड का उपयोग करके क्रोंटैब मेल आउटपुट को अक्षम/रीडायरेक्ट कैसे करें?

<पी> डिफ़ॉल्ट रूप से crontab उस उपयोगकर्ता को जॉब आउटपुट भेजता है जिसने जॉब शेड्यूल किया था। यदि आप आउटपुट को किसी विशिष्ट उपयोगकर्ता पर रीडायरेक्ट करना चाहते हैं, तो नीचे दिखाए अनुसार क्रॉस्टैब में MAIL वैरिएबल जोड़ें या अपडेट करें।

ramesh@dev-db$ crontab -l
MAIL="ramesh"
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
[Note: Crontab of the current logged in user with MAIL variable]
<पी>
यदि आप चाहते हैं कि मेल कहीं भी न भेजा जाए, यानी ईमेल किए जाने वाले क्रॉस्टैब आउटपुट को रोकने के लिए, नीचे दिखाए अनुसार क्रॉस्टैब में MAIL वैरिएबल जोड़ें या अपडेट करें।

MAIL=""

13. क्रोनटैब का उपयोग करके हर सेकंड लिनक्स क्रॉन जॉब्स को कैसे निष्पादित करें।

<पी> आप हर दूसरे क्रोनजॉब को शेड्यूल नहीं कर सकते। क्योंकि क्रॉन में आप जो न्यूनतम इकाई निर्दिष्ट कर सकते हैं वह मिनट है। एक सामान्य परिदृश्य में, हममें से अधिकांश के लिए सिस्टम में हर सेकंड कोई कार्य चलाने का कोई कारण नहीं है।

14. क्रोनटैब में PATH वेरिएबल निर्दिष्ट करें

<पी> उपरोक्त सभी उदाहरणों में हमने लिनक्स कमांड या शेल-स्क्रिप्ट का पूर्ण पथ निर्दिष्ट किया है जिसे निष्पादित करने की आवश्यकता है।

उदाहरण के लिए, /home/ramesh/tape-backup निर्दिष्ट करने के बजाय, यदि आप केवल टेप-बैकअप निर्दिष्ट करना चाहते हैं, तो नीचे दिखाए गए अनुसार crontab में PATH चर में पथ /home/ramesh जोड़ें।

ramesh@dev-db$ crontab -l
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh
@yearly annual-maintenance
*/10 * * * * check-disk-space
[Note: Crontab of the current logged in user with PATH variable]

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
<पी> ध्यान दें: यह आपके crontab पर cron-file.txt इंस्टॉल कर देगा, जो आपकी पुरानी cron प्रविष्टियों को भी हटा देगा। इसलिए, कृपया cron-file.txt से क्रॉन प्रविष्टियाँ अपलोड करते समय सावधान रहें।

अतिरिक्त क्रॉन ट्यूटोरियल

  • क्रॉन बनाम एनाक्रॉन:लिनक्स पर एनाक्रॉन कैसे सेटअप करें (एक उदाहरण के साथ)
  • हर 5 मिनट, सेकंड, घंटे, दिन, महीने में क्रॉन कैसे चलाएं
  • 6 लिनक्स क्रोनटैब कमांड उदाहरण
  • बैच मोड में क्रॉन जॉब्स कैसे स्थापित करें, संपादित करें या निकालें
  • 9 उदाहरणों का उपयोग करके at, atq, atrm, बैच कमांड को समझें

बहुत बढ़िया लिनक्स लेख

<पी> निम्नलिखित कुछ अद्भुत 15 उदाहरण हैं लेख जो आपको उपयोगी लग सकते हैं।

  • माँ, मुझे यह मिल गया! — 15 व्यावहारिक लिनक्स कमांड उदाहरण खोजें
  • लिनक्स कमांड लाइन इतिहास में महारत हासिल करने के लिए 15 उदाहरण
  • यूनिक्स एलएस कमांड:15 व्यावहारिक उदाहरण
  • ग्रेप पर पकड़ बनाएं! – 15 प्रैक्टिकल ग्रेप कमांड उदाहरण

  1. PHP में imagepalettecopy () फ़ंक्शन का उपयोग करके पैलेट को एक छवि से दूसरी छवि में कैसे कॉपी करें? PHP में imagepalettecopy () फ़ंक्शन का उपयोग करके पैलेट को एक छवि से दूसरी छवि में कैसे कॉपी करें?

    इमेजपैलेटकॉपी () एक इनबिल्ट PHP फंक्शन है जिसका उपयोग पैलेट को एक इमेज से दूसरी इमेज में कॉपी करने के लिए किया जाता है। यह फ़ंक्शन पैलेट को स्रोत छवि से गंतव्य छवि में कॉपी करता है। सिंटैक्स void imagepalettecopy(resource $destination, resource $source) पैरामीटर इमेजपैलेटकॉपी () दो पैरामीटर स्वीकार

  1. जावा का उपयोग करके ओपनसीवी में एक छवि पर हिस्टोग्राम इक्वलाइजेशन। जावा का उपयोग करके ओपनसीवी में एक छवि पर हिस्टोग्राम इक्वलाइजेशन।

    छवि का हिस्टोग्राम पिक्सेल की तीव्रता के मानों की आवृत्ति दिखाता है। एक छवि हिस्टोग्राम में, एक्स-अक्ष ग्रे स्तर की तीव्रता दिखाता है और वाई-अक्ष इन तीव्रताओं की आवृत्ति दिखाता है और एक छवि के विपरीत को बेहतर बनाता है। equalizeHist() Imgproc विधि की विधि स्रोत और गंतव्य छवियों का प्रतिनिधित्व करने

  1. Matplotlib आकृति से एक svg फ़ाइल निर्यात करना Matplotlib आकृति से एक svg फ़ाइल निर्यात करना

    एक matplotlib आकृति से एक SVG फ़ाइल निर्यात करने के लिए, हम निम्नलिखित कदम उठा सकते हैं - फिगर साइज सेट करें और सबप्लॉट्स के बीच और आसपास पैडिंग को एडजस्ट करें। एक आकृति और सबप्लॉट का एक सेट बनाएं। numpy का उपयोग करके यादृच्छिक x और y डेटा बिंदु बनाएं। प्लॉट() . का उपयोग करके x और y डेट