क्रोन क्या है?
क्रोन एक जॉब शेड्यूलिंग सिस्टम है जो Linux और MacOS ऑपरेटिंग सिस्टम में उपलब्ध है।
इसका उपयोग किसी भी प्रोग्राम को चलाने . के लिए किया जा सकता है किसी भी समय।
इसमें रूबी कोड शामिल है!
यदि कोई विशिष्ट आवर्ती कार्य . है कि आप हर दिन, हर हफ्ते या हर घंटे स्वचालित रूप से चलाना चाहते हैं, तो क्रॉन वह हो सकता है जिसे आप ढूंढ रहे हैं।
कार्यों के उदाहरण में शामिल हैं :
- साप्ताहिक डेटाबेस बैकअप चलाना
- वेबसाइट गतिविधि की दैनिक रिपोर्ट तैयार करना
- अनुस्मारक ईमेल भेजना
आइए जानें कि आप क्रोन को आपके लिए कैसे काम कर सकते हैं!
क्रोन की मूल बातें
प्रत्येक उपयोगकर्ता के पास एक क्रॉन फ़ाइल हो सकती है जहां आप उन कार्यों को परिभाषित करते हैं जिन्हें आप चलाना चाहते हैं।
आप इस फ़ाइल को crontab -e
. के साथ संपादित कर सकते हैं आदेश।
या निर्धारित कार्यों को crontab -l
. के साथ सूचीबद्ध करें ।
उदाहरण क्रॉन जॉब :
0 0 * * * /opt/rubies/ruby-2.5.1/bin/rake db:backup
सिंटैक्स थोड़ा मुश्किल हो सकता है और आप इन फ़ाइलों को हर समय हाथ से संपादित नहीं करना चाहेंगे।
क्या हमारे लिए चीजों को आसान बनाने के लिए कोई रत्न हैं?
हाँ!
जब भी रत्न का उपयोग कैसे करें
क्योंकि क्रोन सिंटैक्स को याद रखना मुश्किल हो सकता है, हम whenever
. जैसे रत्न का उपयोग कर सकते हैं ।
यह रत्न आपको रूबी में क्रॉन जॉब्स को परिभाषित करने में मदद करता है ।
पहले रत्न स्थापित करें।
फिर, कॉन्फ़िगरेशन फ़ाइल बनाएं :
wheneverize . # [add] config/schedule.rb
इसे खोलो।
आपको कुछ टिप्पणी-आउट उदाहरण दिखाई देंगे, यदि आप चाहें तो उन्हें हटा दें।
मान लें कि हम एक बैकअप कार्य चाहते हैं जो हर घंटे चलता है।
इसे “config/schedule.rb” फ़ाइल के अंदर लिखें :
every 1.hour do rake "db:backup" end
विकल्पों में शामिल हैं :
- रेक (अपने वर्तमान प्रोजेक्ट पर परिभाषित एक रेक कार्य प्रारंभ करें, ध्यान दें कि
db:backup
डिफ़ॉल्ट रूप से परिभाषित नहीं है, लेकिन आप कोशिश कर सकते हैंdb:version
) - धावक (रूबी वर्ग + विधि, जैसे
Archive.backup_now
) - कमांड (सिस्टम कमांड)
अब :
whenever --update-crontab
चलाएं, चलाएं क्रॉन प्रविष्टियां उत्पन्न करने के लिए आदेश।
आपको अपनी नई प्रविष्टि crontab -l
. के साथ देखने में सक्षम होना चाहिए ।
मुझे यही मिला है :
0 * * * * /bin/bash -l -c 'cd /home/jesus/testing && RAILS_ENV=production bundle exec rake db:backup --silent'
ध्यान दें कि कार्य production
में चलेगा मोड।
इसे बदलना चाहते हैं?
आप इस सेटिंग का उपयोग कर सकते हैं :
set :environment, "development"
यह आपके schedule.rb
. में जाता है फ़ाइल, सबसे ऊपर।
आप इस आदेश का उपयोग भी कर सकते हैं :
whenever --update-crontab --set environment=development
जब आप इस कमांड को चलाते हैं तो यह "विकास" के साथ सभी कार्यों को पर्यावरण के रूप में बनाता है।
अधिक जब भी उदाहरण
यह उदाहरण दिखाता है कि आप और अधिक विशिष्ट कैसे हो सकते हैं।
साप्ताहिक कार्य :
every :monday, at: "6:00 PM" do runner "Mail.send_weekly_newsletter" endकरें
यह उदाहरण दिखाता है कि एक ही कार्य को दिन में कई बार कैसे चलाया जाता है।
कार्य को दिन में दो बार चलाएं :
every :day, at: ["12:00 AM", "12:00 PM"] do command "rm tmp/testing.txt" endकरें
जब भी जेम लॉगिंग और समस्या निवारण
एक बार जब आप अपनी crontab फ़ाइल में कार्य कर लेते हैं (crontab -l
. के साथ जांचें) ) आप जाने के लिए तैयार हैं।
अगला:
आपको कैसे पता चलेगा कि शेड्यूल किए गए कार्य सही तरीके से काम कर रहे हैं?
आप लॉगिंग सेट कर सकते हैं और आउटपुट पढ़ सकते हैं।
इसे अपने schedule.rb
. के शीर्ष पर जोड़कर लॉगिंग सक्षम करें फ़ाइल।
कॉन्फ़िगरेशन :
set :output, "log/cron.log"
whenever --update-crontab
चलाना याद रखें हर बार परिवर्तन करने पर आदेश दें!
लॉग फ़ाइल अभी भी खाली है?
कुछ घटित होते देखने के लिए आपको निर्धारित समय की प्रतीक्षा करनी होगी।
बीटीडब्ल्यू, अगर आपको लॉग में यह त्रुटि दिखाई देती है :
/bin/bash: bundle: command not found
इसका मतलब है कि क्रॉन रूबी का वही संस्करण नहीं चला रहा है जो आप कर रहे हैं।
यदि आप रूबी संस्करण प्रबंधक का उपयोग कर रहे हैं :
इसे .bash_profile
. से लोड करना सुनिश्चित करें फ़ाइल, के बजाय .bashrc
, ताकि आपके क्रॉन कार्य इसका उपयोग कर सकें।
जब भी विकल्प
जब भी एक सुव्यवस्थित रत्न होता है और यह बहुत अच्छा काम करता है।
लेकिन विकल्प क्या हैं?
यहां एक सूची है :
- Heroku शेड्यूलर, यह Heroku उपयोगकर्ताओं के लिए एक निःशुल्क जॉब शेड्यूलिंग ऐड-ऑन है। क्रोन की तरह लचीला नहीं है, लेकिन यह काम पूरा करता है
- रूफस शेड्यूलर, एक रूबी रत्न जो क्रॉन को इन-मेमोरी शेड्यूलर से बदल देता है
- साइडक्लोक और साइडकीक-क्रॉन, दोनों साइडकीक ऐड-ऑन हैं जो साइडकीक में पुनरावर्ती कार्यों को जोड़ते हैं
ध्यान दें कि दोनों साइडकीक एडॉन्स शेड्यूलिंग के लिए वास्तविक क्रॉन सिंटैक्स चाहते हैं, इसलिए यह सिंटैक्स जितना अच्छा नहीं होगा।
अच्छी बात यह है कि वे Sidekiq वेब UI के साथ एकीकृत होते हैं।
सारांश
आपने रूबी में जब भी रत्न का उपयोग करके क्रॉन जॉब शेड्यूल करना सीख लिया है!
कृपया इस लेख को शेयर करें ताकि अधिक से अधिक लोग इसका लाभ उठा सकें।
पढ़ने के लिए धन्यवाद।