मैं परीक्षण / डिबगिंग के लिए अभी क्रॉन को नौकरी कैसे चला सकता हूं? शेड्यूल बदले बिना!


133

मेरे पास एक क्रॉन जॉब है जिसे शेड्यूल बदलने के अलावा, रोज़ चलाने के लिए निर्धारित किया गया है, क्या कमांड का टेस्ट रन करने का कोई और तरीका है यह देखने के लिए कि क्या यह उद्देश्य के अनुसार काम करता है?


मैं आपके सवाल को नहीं समझता? बस कमांड क्यों नहीं चलाते?
फ़ेवाडी

20
मैं जानता हूँ कि आदेश काम करता है जब खोल (मेरे शेल) में दर्ज है, लेकिन मुझे पता है कि अगर यह काम करता है जब चाहते हैं cronयह चलता है, यह ENV या खोल विशिष्ट सामान (से प्रभावित हो सकता ~विस्तार) या स्वामित्व और अनुमति के सामान या ...
अली

2
तो क्यों नहीं एक ही कमांड के साथ हर मिनट नई क्रोन जॉब बनाई जाए?
favadi

13
यह वही है जो मैंने समाप्त किया है, लेकिन मुझे आश्चर्य है कि अगर क्रॉन को यह बताने का कोई तरीका है कि आप नौकरी नंबर 7 पर एक टेस्ट रन चाहते हैं! निश्चित रूप से दूसरों को इस समस्या / अनुरोध / इच्छा से पहले पड़ा है!
अली

4
गूगल के माध्यम से यहाँ दृश्य के लिए बहुत देर हो चुकी है लेकिन फेवाडी के उत्तर के बारे में सब कुछ गलत था। यह स्पष्ट था कि वह इसे क्रोन से परीक्षण करना चाहता था और क्रेटाब को संपादित किए बिना विशेष रूप से ऐसा करना चाहता था। LIttle किसी को यह बताने से भी बदतर है कि आप जो चाहते हैं वह गलत है जब उन्होंने उपयोग के मामले को समझने की कोशिश नहीं की।
हॉरमनएचएच

जवाबों:


32

जहाँ तक मुझे पता है कि सीधे तौर पर ऐसा करने का कोई तरीका नहीं है क्योंकि क्रोन का एक विशेष उद्देश्य है - एक विशेष समय पर शेड्यूल कमांड चलाना। तो सबसे अच्छी बात यह है कि या तो मैन्युअल रूप से क्रॉस्टैब एंट्री बनाएं या एक स्क्रिप्ट लिखें जो पर्यावरण को हटाती है और रीसेट करती है।


57

आप निम्नलिखित आदेश के साथ चलने के लिए क्रेस्टैब को मजबूर कर सकते हैं:

run-parts /etc/cron.daily

9
... इस धारणा पर कि ओपी की क्रोन जॉब (3 साल पहले पूछी गई) cron.daily में एक व्यक्तिगत क्रॉस्टैब के विपरीत है।
जेफ स्कालर

18
हालांकि, यह क्रोन उपयोगकर्ता के वातावरण को पूरी तरह से अनुकरण नहीं करता है, इसलिए यह बहुत संभावना है कि आपके पास अभी भी कीड़े होंगे क्योंकि एक बार जब आप अपनी स्क्रिप्ट को एक वास्तविक क्रोन नौकरी के रूप में चलाते हैं तो आपके पैट और अन्य एन्वारर्स आपके द्वारा किए गए उपयोगकर्ता की तुलना में भिन्न हो सकते हैं run-parts /etc/cron.daily। मैं अभी इस बग से जूझ रहा हूं, क्योंकि मेरी स्क्रिप्ट ठीक चलेगी, run-partsलेकिन विफल होने पर वास्तव में क्रोन उपयोगकर्ता के तहत चलती है।
आर्टहेयर

42

आप क्रोन उपयोगकर्ता वातावरण को अनुकरण कर सकते हैं जैसा कि "मैन्युअल रूप से और तुरंत क्रॉन जॉब चलाना" में समझाया गया है । यह आपको कार्य कार्यों का परीक्षण करने की अनुमति देगा जब इसे क्रोन उपयोगकर्ता के रूप में चलाया जाएगा।


लिंक से अंश:


चरण 1 : मैंने इस लाइन को अस्थायी रूप से उपयोगकर्ता के क्रैस्टैब में रखा:

* * * * *   /usr/bin/env > /home/username/tmp/cron-env

फ़ाइल लिखे जाने के बाद फिर उसे निकाल लिया।

चरण 2 : खुद को थोड़ा रन-ए-क्रॉन बैश स्क्रिप्ट से युक्त करें:

#!/bin/bash
/usr/bin/env -i $(cat /home/username/tmp/cron-env) "$@"

तो, सवाल में उपयोगकर्ता के रूप में, मैं करने में सक्षम था

run-as-cron /the/problematic/script --with arguments --and parameters

उपयोगी ट्रिक यदि आपकी आज्ञा में प्रतिशत का चिह्न है, तो निश्चित रूप से यह मदद नहीं करेगा।
basic6
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.