क्रॉन जॉब एक निर्धारित समय पर, पृष्ठभूमि में एक कमांड चलाता है, चाहे कोई आपकी साइट पर आ रहा हो या नहीं। यह गाइड KPanel में एक जॉब जोड़ने, इस प्लेटफ़ॉर्म के लिए शेड्यूल और कमांड को सही ढंग से लिखने, WordPress के अविश्वसनीय अंतर्निहित शेड्यूलर को बदलने, और जब कोई जॉब अपेक्षा के अनुरूप काम न करे तो आउटपुट ढूंढने को कवर करती है।
KPanel में क्रॉन कहां मिलता है
क्रॉन एक साइट से संबंधित होता है, इसलिए आप इसे मुख्य मेनू की बजाय साइट से एक्सेस करते हैं:
- KPanel में साइन इन करें और बाईं साइडबार में वेबसाइटें पर क्लिक करें।
- अपनी वांछित साइट पर क्लिक करें।
- साइट के अपने मेनू में, सेटिंग्स खोलें, फिर Cron।
सीधा पता /websites/<site-id>/cron है। आपको मौजूदा जॉब्स की एक तालिका दिखाई देगी, या यदि साइट में कोई जॉब नहीं है तो एक खाली स्थिति दिखाई देगी।

एक जॉब जोड़ना
ऊपर दाईं ओर Cron जॉब जोड़ें पर क्लिक करें। फॉर्म में तीन फ़ील्ड हैं।
शेड्यूल
छह प्रीसेट बटन आपके लिए व्यंजक भर देते हैं:
| बटन | व्यंजक |
|---|---|
| हर मिनट | * * * * * |
| हर 5 min | */5 * * * * |
| हर घंटे | 0 * * * * |
| दैनिक 2AM | 0 2 * * * |
| साप्ताहिक रविवार | 0 2 * * 0 |
| मासिक 1 तारीख | 0 2 1 * * |
या अपना खुद का Cron व्यंजक में टाइप करें। क्रम में पांच फ़ील्ड हैं: मिनट, घंटा, महीने का दिन, महीना, सप्ताह का दिन:
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
आप साइट के सेटिंग्स टैब में, फिर SFTP टैब में सटीक पथ की पुष्टि कर सकते हैं, जो इसे साइट फ़ाइलें के अंतर्गत प्रिंट करता है।
सामान्य कमांड:
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 अनुभाग खोलें।
- सिस्टम cron सक्षम करें पर क्लिक करें।
इससे एक शेड्यूल जुड़ जाता है जो हर पांच मिनट में WP-Cron चलाता है और DISABLE_WP_CRON सेट करता है ताकि पेज लोड होने से यह ट्रिगर होना बंद हो जाए। उसी स्क्रीन पर सिस्टम cron हटाएं दोनों हिस्सों को वापस पलट देता है।
यदि आप इसे स्वयं करना चाहें, तो यह दो चरणों में है:
आगंतुक द्वारा ट्रिगर होने वाले संस्करण को निष्क्रिय करें। इसे wp-config.php में, /* That's all, stop editing! */ पंक्ति के ऊपर, सेटिंग्स में फिर फाइल मैनेजर का उपयोग करते हुए जोड़ें:
define( 'DISABLE_WP_CRON', true );
वास्तविक जॉब जोड़ें। सेटिंग्स में, फिर 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 पर निर्भर करता है, इसलिए यह ठीक वही कार्यभार है जो किसी शांत स्टोर पर प्रभावित होता है।
एक बार वास्तविक शेड्यूल लागू हो जाने पर, क्यू को हर पांच मिनट में प्रोसेस किया जाता है। इसे wp-admin में WooCommerce, फिर Status, फिर Scheduled Actions पर देखें।
उच्च मात्रा वाला स्टोर */2 * * * * पर जा सकता है। इससे कम जाने से शायद ही कभी मदद मिलती है: आप काम करने से ज़्यादा समय प्रक्रियाएं शुरू करने में खर्च करते हैं। देखें WooCommerce सेट अप करना।
मौजूदा जॉब्स का प्रबंधन
जॉब्स तालिका Label, Schedule, Command, आखिरी रन और Status दिखाती है, जिसमें प्रत्येक पंक्ति पर दो कार्रवाइयां होती हैं:
- Disable किसी जॉब को हटाए बिना रोक देता है, और इसे वापस लाने के लिए Enable में बदल जाता है। इसका उपयोग तब करें जब आप परीक्षण कर रहे हों कि कोई जॉब समस्या पैदा कर रही है या नहीं।
- Delete इसे स्थायी रूप से हटा देता है। आपसे पुष्टि के लिए कहा जाता है, और शेड्यूल किए गए रन तुरंत बंद हो जाते हैं।
किसी क्रॉन जॉब को हटाना वापस नहीं लिया जा सकता। शेड्यूल उसी समय सर्वर से हटा दिया जाता है। यदि आप इसे केवल अस्थायी रूप से रोकने की कोशिश कर रहे हैं, तो Disable का उपयोग करें।
आउटपुट ढूंढना
KapsuleHost द्वारा बनाई गई हर जॉब का आउटपुट आपके लिए कैप्चर किया जाता है। मानक आउटपुट और त्रुटियां आपकी साइट यूज़र की होम डायरेक्टरी में एक cron-logs डायरेक्टरी में एक लॉग फ़ाइल में जोड़ी जाती हैं, प्रति जॉब एक फ़ाइल।
वह लॉग लगभग हर "क्या मेरी जॉब चली?" प्रश्न का उत्तर है, क्योंकि यह रिकॉर्ड करता है कि कमांड ने क्या प्रिंट किया और उसने कोई त्रुटि उठाई या नहीं।
इसे पढ़ने के लिए, SSH पर कनेक्ट करें और ~/cron-logs/ में देखें। SSH कुंजी प्रमाणीकरण का उपयोग करता है, इसलिए पहले साइट के सेटिंग्स टैब में, फिर SSH कुंजियां टैब से अपनी सार्वजनिक कुंजी जोड़ें: देखें SSH कुंजियां जोड़ना।
फाइल मैनेजर और 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। - जब तक वास्तव में ज़रूरत न हो, हर मिनट का उपयोग न करें।
*/5लगभग हर चीज़ के लिए पर्याप्त है, जिसमें WordPress और WooCommerce शामिल हैं। - जॉब्स को छोटा रखें। जो जॉब अपने अंतराल से अधिक समय लेती है वह अगले रन के साथ ओवरलैप हो जाएगी।
- शोर मचाने वाली किसी भी चीज़ के लिए आउटपुट को रीडायरेक्ट करें, ताकि एक बातूनी जॉब आपकी डिस्क को न भर दे।
- सूची की कभी-कभार समीक्षा करें। किसी हटाए गए प्लगइन से बची हुई जॉब्स चलती रहती हैं।
समस्या निवारण
जॉब कभी नहीं चलती लगती है। पहले पथ जांचें। लॉग फ़ाइल खोलें। फिर पुष्टि करें कि स्थिति Active है और Disabled नहीं है। फिर उसी कमांड को SSH पर चलाएं और देखें कि वह क्या कहता है।
लॉग में "command not found"। एक पूर्ण पथ गायब है। सीधे नाम की बजाय /usr/bin/php, /usr/bin/wp, /usr/bin/curl का उपयोग करें।
अनुमति अस्वीकृत। जॉब आपकी साइट के सिस्टम यूज़र के रूप में चलती है। उस यूज़र को उन सभी चीज़ों का स्वामी होना चाहिए, या कम से कम पढ़ने में सक्षम होना चाहिए, जिन्हें कमांड छूता है। फाइल मैनेजर का उपयोग करना में अनुमतियां जांचें।
WordPress के कार्य अभी भी देर से चलते हैं। पुष्टि करें कि स्वैप के दोनों हिस्से मौजूद हैं: शेड्यूल सेटिंग्स में, फिर Cron में मौजूद है, और DISABLE_WP_CRON सेट है। WordPress टैब पर WP-Cron अनुभाग दोनों की वर्तमान स्थिति दिखाता है।
जॉब चलती है लेकिन उस दौरान साइट धीमी हो जाती है। इसे किसी शांत समय पर ले जाएं, या काम को छोटे बैचों में विभाजित करें। साइट स्तर का संसाधन उपयोग प्रदर्शन के अंतर्गत दिखाई देता है: देखें वेबसाइट की गति सुधारना।
प्लगइन अपडेट के बाद कोई जॉब काम करना बंद कर दिया। कमांड पथ बदल गया हो सकता है। लॉग जांचें, फिर पुरानी जॉब को हटाकर और एक सही जॉब जोड़कर जॉब्स तालिका से कमांड अपडेट करें।