वेबसाइट
Cron Jobs को सेटअप और प्रबंधित करना
A cron job runs a command on a schedule, in the background, whether or not anyone is visiting your site. This guide covers adding one in KPanel, writing the schedule and the command correctly for…
क्रॉन जॉब्स सेटअप और प्रबंधन
एक क्रॉन जॉब एक निर्धारित समय पर कमांड चलाता है, पृष्ठभूमि में, चाहे कोई आपकी साइट पर आ रहा हो या नहीं। यह गाइड KPanel में एक जॉब जोड़ना, इस प्लेटफ़ॉर्म के लिए सही तरीके से शेड्यूल और कमांड लिखना, WordPress के अविश्वसनीय बिल्ट-इन शेड्यूलर को बदलना, और जब कोई जॉब अपेक्षित काम न करे तो आउटपुट खोजना कवर करता है।
KPanel में क्रॉन कहाँ है
क्रॉन एक साइट के अंतर्गत आता है, इसलिए आप इसे मुख्य मेनू के बजाय साइट से पहुँचते हैं:
- KPanel में साइन इन करें और बाईं ओर की साइडबार में Websites पर क्लिक करें।
- वह साइट क्लिक करें जिसे आप चाहते हैं।
- साइट के अपने मेनू में, Advanced खोलें, फिर Cron खोलें।
सीधा पता /websites/<site-id>/cron है। आपको मौजूदा जॉब्स की एक तालिका दिखेगी, या यदि साइट में कोई नहीं है तो एक खाली स्थिति दिखेगी।

जॉब जोड़ना
ऊपर दाईं ओर Add Cron Job पर क्लिक करें। फॉर्म में तीन फील्ड हैं।
शेड्यूल
छह प्रीसेट बटन आपके लिए व्यंजक भरते हैं:
| बटन | व्यंजक |
|---|---|
| हर मिनट | * * * * * |
| हर 5 मिनट | */5 * * * * |
| हर घंटा | 0 * * * * |
| दैनिक सुबह 2 बजे | 0 2 * * * |
| साप्ताहिक रविवार | 0 2 * * 0 |
| मासिक 1st | 0 2 1 * * |
या Cron expression में अपना खुद का टाइप करें। पाँच फील्ड, क्रम में, मिनट, घंटा, महीने का दिन, महीना, सप्ताह का दिन हैं:
minute hour day-of-month month day-of-week
0 3 * * *हर दिन सुबह 3:00 बजे चलता है।*/15 * * * *हर पंद्रह मिनट में चलता है।0 9 * * 1हर सोमवार सुबह 9:00 बजे चलता है।30 1 1 * *हर महीने की पहली तारीख को सुबह 1:30 बजे चलता है।0 */6 * * *हर छह घंटे में, घंटे पर चलता है।
लेबल
एक नाम जिसे आप बाद में पहचानेंगे, जैसे WordPress cron या Nightly stock sync। यह वह है जो जॉब्स तालिका आपको दिखाता है, इसलिए इसे विवरणात्मक बनाएँ: job 3 किसी को सुबह 2 बजे मदद नहीं करता।
कमांड
चलाने के लिए शेल कमांड। जॉब बनाने के लिए Save पर क्लिक करें।
पूर्ण पथ का उपयोग करें। क्रॉन एक न्यूनतम वातावरण के साथ चलता है और आपकी शेल प्रोफ़ाइल में कोई भी नहीं है, इसलिए एक नंगा php या एक सापेक्ष निर्देशिका जो SSH पर लॉग इन करने पर काम करती है वह यहाँ चुप रहकर विफल हो जाएगी। हर बार पूरा पथ लिखें।
कमांड लिखना
जॉब्स आपकी साइट के अपने सिस्टम यूज़र के रूप में चलते हैं, इसलिए आपकी होम निर्देशिका सही एंकर है और ~ सही तरीके से हल करता है। आपकी साइट की फाइलें इस पर लाइव हैं:
~/htdocs/yourdomain.co.nz
आप साइट के Files पर सटीक पथ की पुष्टि कर सकते हैं, फिर SFTP टैब, जो इसे Site files के तहत प्रिंट करता है।
सामान्य कमांड:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
cd ~/htdocs/yourdomain.co.nz && /usr/bin/php bin/send-queued-emails.php
/usr/bin/curl -fsS https://yourdomain.co.nz/api/nightly-report
इसे शेड्यूल करने से पहले कमांड का परीक्षण करें। यदि यह एक wp कमांड है तो इसे साइट के WordPress में पेस्ट करें, फिर Console अनुभाग, या इसे SSH पर चलाएँ। एक ऐसा जॉब जो कभी काम करने वाला नहीं था, प्रॉम्प्ट पर 3 बजे लॉग फाइल में देखने की तुलना में बहुत आसान है।
WordPress के बिल्ट इन शेड्यूलर को बदलना
WordPress अपने स्वयं के छद्म-शेड्यूलर, WP-Cron के साथ आता है, जो केवल तभी फायर करता है जब कोई पृष्ठ लोड करता है। एक शांत साइट पर, अनुसूचित पोस्ट देर से प्रकाशित होते हैं और ईमेल अनुचित भेजे जाते हैं। एक व्यस्त साइट पर, हर आगंतुक को शेड्यूल की जाँच की कीमत चुकानी पड़ती है।
एक वास्तविक क्रॉन जॉब दोनों को ठीक करता है। KPanel पूरे स्वैप को आपके लिए करता है:
- साइट खोलें, फिर WordPress टैब खोलें।
- WP-Cron अनुभाग खोलें।
- Enable system cron पर क्लिक करें।
यह एक शेड्यूल जोड़ता है जो हर पाँच मिनट में WP-Cron चलाता है और DISABLE_WP_CRON सेट करता है ताकि पृष्ठ लोड इसे ट्रिगर करना बंद कर दें। उसी स्क्रीन पर Remove system cron दोनों हिस्सों को पलट देता है।
यदि आप इसे मैन्युअल रूप से करना पसंद करते हैं, तो यह दो चरण हैं:
आगंतुक-ट्रिगर किया गया संस्करण अक्षम करें। wp-config.php में इसे जोड़ें, /* That's all, stop editing! */ लाइन के ऊपर, Files का उपयोग करके, फिर File Manager:
define( 'DISABLE_WP_CRON', true );
असली जॉब जोड़ें। Advanced में, फिर Cron:
- शेड्यूल:
*/5 * * * * - लेबल:
WordPress cron - कमांड:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
DISABLE_WP_CRON हिस्से को न छोड़ें। दोनों चलने के साथ, हर अनुसूचित कार्य दो बार फायर कर सकता है: डुप्लिकेट ईमेल, डुप्लिकेट ऑर्डर प्रोसेसिंग, सदस्यता प्लग-इन पर डुप्लिकेट शुल्क। WP-Cron अनुभाग में वन क्लिक एक्शन का उपयोग करें और यह आपके साथ नहीं हो सकता।
WooCommerce और पृष्ठभूमि कतारें
WooCommerce ऑर्डर स्थिति परिवर्तन, सदस्यता नवीकरण, ईमेल और स्टॉक अपडेट के लिए एक पृष्ठभूमि कतार का उपयोग करता है। यह WP-Cron पर निर्भर करता है, इसलिए यह ठीक वह वर्कलोड है जो एक शांत स्टोर पर पीड़ित होता है।
एक बार वास्तविक शेड्यूल जगह पर आने के बाद, कतार को हर पाँच मिनट में संसाधित किया जाता है। इसे WooCommerce पर देखें, फिर Status, फिर wp-admin में Scheduled Actions।
एक उच्च-मात्रा वाला स्टोर */2 * * * * में स्थानांतरित हो सकता है। इससे नीचे जाना शायद ही कभी मदद करता है: आप काम करने की तुलना में प्रक्रियाएँ शुरू करने में अधिक समय व्यतीत करते हैं। Setting Up WooCommerce देखें।
मौजूदा जॉब्स का प्रबंधन
जॉब्स तालिका Label, Schedule, Command, Last run और Status दिखाती है, हर पंक्ति पर दो क्रियाएँ:
- Disable एक जॉब को बिना हटाए रोक देता है, और इसे वापस लाने के लिए Enable में बदल जाता है। जब आप परीक्षण कर रहे हों कि क्या कोई जॉब समस्या पैदा कर रहा है तो इसका उपयोग करें।
- Delete इसे स्थायी रूप से हटा देता है। आपको पुष्टि माँगी जाती है, और अनुसूचित रन तुरंत बंद हो जाते हैं।
क्रॉन जॉब को हटाना पूर्ववत नहीं किया जा सकता। शेड्यूल सर्वर से वहीं हटा दिया जाता है। यदि आप केवल इसे अस्थायी रूप से रोकने का प्रयास कर रहे हैं, तो Disable का उपयोग करें।
आउटपुट ढूँढना
Kapsule द्वारा बनाया गया हर जॉब इसके आउटपुट को आपके लिए कैप्चर करता है। मानक आउटपुट और त्रुटियाँ आपकी साइट यूज़र की होम निर्देशिका में एक cron-logs निर्देशिका में एक लॉग फाइल में जोड़ी जाती हैं, प्रति जॉब एक फाइल।
वह लॉग लगभग हर "क्या मेरा जॉब चला?" प्रश्न का उत्तर है, क्योंकि यह रिकॉर्ड करता है कि कमांड ने क्या मुद्रित किया और कोई भी त्रुटि जो इसने उठाई।
इसे पढ़ने के लिए, SSH पर कनेक्ट करें और ~/cron-logs/ में देखें। SSH कुंजी प्रमाणीकरण का उपयोग करता है, इसलिए पहले साइट के Files से अपनी सार्वजनिक कुंजी जोड़ें, फिर SSH Keys टैब: Adding SSH Keys देखें।
फाइल मैनेजर और SFTP खाते आपकी साइट निर्देशिका ~/htdocs/yourdomain.co.nz तक सीमित हैं, और cron-logs एक स्तर ऊपर बैठता है। यह जानबूझकर है: यह एक ठेकेदार को SFTP एक्सेस के साथ वेबसाइट के अलावा सब कुछ से बाहर रखता है। लॉग तक पहुँचने के लिए नेटिव SSH का उपयोग करें, या नीचे दिखाए गए अनुसार आउटपुट को अपनी साइट निर्देशिका में पुनः निर्देशित करें।
यदि आप चाहते हैं कि आउटपुट कहीं फाइल मैनेजर खोल सकता है, तो इसे स्वयं पुनः निर्देशित करें:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now >> ~/htdocs/yourdomain.co.nz/wp-content/cron.log 2>&1
2>&1 त्रुटियों को सामान्य आउटपुट के समान फाइल में भेजता है। इसके बिना, त्रुटियाँ कहीं नहीं जाती हैं।
आपकी साइट निर्देशिका के अंदर कुछ भी संभावित रूप से वेब पर अनुरोध किया जा सकता है। साइट रूट के बजाय पुनः निर्देशित लॉग को wp-content के तहत रखें, इसे एक ऐसा नाम दें जिसका कोई अनुमान नहीं लगा सकता, और डीबग करने के बाद इसे हटा दें।
अच्छी प्रथा
- अपने शेड्यूल को स्टैगर करें। छह जॉब्स सभी
0 2 * * *पर सेट हैं सभी एक साथ शुरू होते हैं। उन्हें फैलाएँ:0 2,10 2,20 2। - हर मिनट का उपयोग न करें जब तक आपको वास्तव में इसकी आवश्यकता न हो।
*/5WordPress और WooCommerce सहित लगभग सभी चीजों के लिए पर्याप्त है। - जॉब्स को छोटा रखें। एक जॉब जो अपने अंतराल से अधिक समय लेता है अगले रन के साथ ओवरलैप होगा।
- कुछ भी शोरगुल करने के लिए आउटपुट पुनः निर्देशित करें, इसलिए एक बातूनी जॉब आपकी डिस्क को भर नहीं देता।
- कभी-कभी सूची की समीक्षा करें। आपने हटाए गए प्लग-इन से छोड़े गए जॉब्स चलते रहते हैं।
समस्या निवारण
जॉब कभी चलता नहीं लगता है। पहले पथ जाँचें। लॉग फाइल खोलें। फिर पुष्टि करें कि स्थिति Active है और Disabled नहीं है। फिर समान कमांड SSH पर चलाएँ और देखें कि यह क्या कहता है।
लॉग में "command not found"। एक लापता पूर्ण पथ। /usr/bin/php, /usr/bin/wp, /usr/bin/curl के बजाय नंगा नाम का उपयोग करें।
अनुमति अस्वीकृत। जॉब आपकी साइट के सिस्टम यूज़र के रूप में चलता है। उस यूज़र को कमांड जो कुछ भी स्पर्श करता है उसे स्वामित्व या कम से कम पढ़ने में सक्षम होना चाहिए। Using the File Manager में अनुमतियाँ जाँचें।
WordPress कार्य अभी भी देर से चलते हैं। पुष्टि करें कि स्वैप के दोनों हिस्से जगह पर हैं: Advanced, फिर Cron में शेड्यूल मौजूद है, और DISABLE_WP_CRON सेट है। WordPress टैब पर WP-Cron अनुभाग दोनों की वर्तमान स्थिति दिखाता है।
जॉब चलता है लेकिन साइट इसके दौरान धीमी है। इसे एक शांत घंटे में ले जाएँ, या कार्य को छोटे बैच में विभाजित करें। साइट-स्तर के संसाधन उपयोग Performance के तहत दिखाई देते हैं: Improving Website Speed देखें।
एक प्लग-इन अपडेट के बाद एक जॉब काम करना बंद कर दिया। कमांड पथ बदल गया हो सकता है। लॉग जाँचें, फिर पुरानी जॉब को हटाकर और एक सुधारी गई जॉब जोड़कर जॉब्स तालिका से कमांड अपडेट करें।