2011-11-15 22 views
25

मैंने हाल ही में एक क्रॉन जॉब जोड़ा, लेकिन आदेश देने के दौरान पथ में गलती की और इसलिए, नौकरी कभी सफल नहीं हुई। क्या हमारे द्वारा किए गए क्रॉन परिवर्तनों का परीक्षण करने का कोई तरीका है?टेस्ट रन क्रॉन एंट्री

कृपया ध्यान दें कि मैंने वास्तव में मेरी कमांड लाइन से कमांड की प्रतिलिपि बनाई है और चिपकाया है और यह सिर्फ एक भटकने वाली कुंजीपटल थी जिसके कारण यह हुआ।

उत्तर

20

यह सवाल भी serverfault and has garnered a couple additional answers

निम्नलिखित पर कहा गया है Marco's solution का एक संशोधित संस्करण है: (यदि सबसे अच्छा ediquite प्रदान नहीं कर रहा है एक लिंक केवल उत्तर देने या किसी और के समाधान की नकल नहीं कर सुनिश्चित नहीं हैं)

एक अस्थायी क्रॉन प्रविष्टि के साथ एक वातावरण फ़ाइल बनाएँ

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

फिर run-as-cron नामक एक खोल स्क्रिप्ट जो आदेश था का उपयोग कर कार्यान्वित बनाने टी पर्यावरण।

#!/bin/sh 

. "$1" 
exec /usr/bin/env -i "$SHELL" -c ". $1; $2" 

यह तो इस तरह प्रयोग किया जाता है:

run-as-cron <cron-environment> <command> 

उदा

run-as-cron /home/username/cron-env 'echo $PATH' 
+0

आपको आदेश कहाँ चलाया गया ** -as-क्रॉन **? –

+0

@IgorGanapolsky मुझे यकीन नहीं है, लेकिन यह उपरोक्त शेल स्क्रिप्ट का नाम हो सकता है। – ptf

+0

"रन-ए-क्रॉन नामक एक शेल स्क्रिप्ट बनाएं" – RichardAtHome

38

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

उदाहरण के लिए, चलाने के काम हर दो मिनट:

*/2 * * * * echo "Hello World"

और मैं अपने लॉग फ़ाइल पर tail -f चलाने (Debian पर /var/log/syslog)।

+6

यही एक मिनट के अलावा मैं भी करता हूं ... लेकिन मेरी इच्छा है कि क्रॉन्टाब को इसे कमांड के साथ चलाने के लिए कहें, ताकि किसी को हमेशा एक मिनट तक इंतजार न करना पड़े जब तक crontab कमांड निष्पादित नहीं करता है, बस यह देखने के लिए कि यह दौड़ने जा रहा है या नहीं। – Teekin

+0

निकटतम आपको मिलेगा '/ bin/sh' चलाकर। फिर फिर, आपको सीधे कॉर्न से जटिल कमांड नहीं चलाना चाहिए। इसके बजाए एक बाहरी स्क्रिप्ट का प्रयोग करें! –

+2

बिल्कुल, इसलिए जब/bin/sh रन काम करता है लेकिन क्रॉन नौकरी नहीं करता है, तो यह काफी निराशाजनक हो जाता है, भले ही यह 40-50 सेकंड का इंतजार कर रहा हो, यह देखने के लिए कि यह अगली बार काम करता है या नहीं। – Teekin

2

यहोशू का जवाब मेरे लिए काम नहीं करता है। दो समस्याओं: cron-env फ़ाइल में

  • चर निर्यात नहीं कर रहे हैं (set -a आवश्यक)।

  • स्क्रिप्ट अभी भी मौजूदा tty (setsid आवश्यक) से जुड़ा हुआ है।

स्क्रिप्ट run-as-cron

#!/bin/sh 

. "$1" 
exec setsid /usr/bin/env -i "$SHELL" -c "set -a; . $1; $2" </dev/null 

पर्याप्त प्रतिनिधि 'उसके जवाब को ठीक करने या टिप्पणी जोड़ने के लिए ...

0

उपयोग आदेश crontab -e यह एक vim संपादक खुलेगा होना चाहिए और आपको यहां सब कुछ करना है * * * * * /somepath/urscript.sh, सुनिश्चित करें कि आपके पास स्क्रिप्ट के बीच उचित रिक्त स्थान हैं, निष्पादन के बाद, आप/var/spool में जांच सकते हैं/मेल स्क्रिप्ट निष्पादन या त्रुटियों का पूरा निशान होगा। परीक्षण के लिए कोई रास्ता नहीं है .. लेकिन यदि आपका sh urscript.sh काम करता है तो क्रॉन टैब में कोई समस्या नहीं होगी क्योंकि यह वही बात है जो आप मैन्युअल रूप से करते हैं।

संबंधित मुद्दे