मैं एक नई क्रोन स्क्रिप्ट का परीक्षण कैसे कर सकता हूं?


14

मैं अलग-अलग लिनक्स डिस्ट्रोस (फेडोरा 11, सेंटो 5 और एसयूएसई 10.2) के एक जोड़े पर चल रहा हूं और अक्सर एक समस्या में भागता हूं जहां एक नई स्क्रिप्ट जिसे मैं क्रॉन जॉब के रूप में चलाना चाहता हूं, जब कमांड लाइन से डायरेक्ट कहा जाता है, तो यह ठीक काम करता है, लेकिन तब विफल हो जाता है जब पीएटीएच या अन्य आवश्यक पर्यावरण चर में मामूली बदलाव के कारण क्रोन से बुलाया जाता है।

क्या कोई ऐसा तरीका है जो मैं एक व्यक्तिगत स्क्रिप्ट को चला सकता हूं जैसे कि यह क्रोन से चलाया जा रहा है, बिना पूरे क्रॉन्ब को चलाने के लिए या पूरे cron.daily / .hourly आदि निर्देशिका को चलाने के लिए रन-पार्ट्स का उपयोग करें? मुझे लगता है कि मैं अगले कुछ मिनटों में स्क्रिप्ट को चलाने के लिए अस्थायी रूप से अपने कॉट्रैब को संपादित कर सकता हूं, लेकिन मेरे पास एक अधिक स्टैंडअलोन समाधान होगा, ताकि मैं कॉट्रैब को गड़बड़ाने का जोखिम न उठाऊं।

जवाबों:


9

से गूगल खोज परpath in crontab

root@pingu # cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

आप मूल रूप से पथ सेट करना चाहते हैं और फिर विविधताओं के बारे में चिंता करने की ज़रूरत नहीं है। इसके अलावा, त्वरित परीक्षण समान स्क्रिप्ट चर का उपयोग करके अपने सभी बक्से पर SSH के माध्यम से अपनी स्क्रिप्ट को चलाने के लिए है।


धन्यवाद, मैंने यह नहीं सोचा था कि एक क्रॉस्टैब एक स्क्रिप्ट की तरह है जिसमें आप क्रॉस्टैब के भीतर पर्यावरण चर घोषित कर सकते हैं।
gareth_bowles 2:14 पर

7

अगर मैं एक व्यक्तिगत रूप से अनुसूचित क्रॉन जॉब (क्रॉस्टैब में एक अलग लाइन) चला रहा हूं, तो मैं इसे हर मिनट या हर दूसरे मिनट के लिए शेड्यूल करूंगा, क्योंकि मैं इसका परीक्षण कर रहा हूं। एक बार जब इसका परीक्षण हो जाता है, तो मैं क्रॉस्टैब लाइन को संपादित करूँगा ताकि यह उस आवृत्ति पर चले जो मैं चाहता हूं।

एक साइड-नोट के रूप में, अगर मैं परीक्षण करना चाहता हूं कि क्रोन स्वयं ठीक से काम कर रहा है, और परिणामों को सही पते पर ईमेल कर रहा है (बहुत महत्वपूर्ण) मैं निम्नलिखित लाइन को अपने / etc / crontab में जोड़ूंगा:

 * * * * * root ls /doesnotexistfoobar

हर मिनट चलाता है, और lsएक निर्देशिका पर ऐसा करने की कोशिश करता है जो मौजूद नहीं है। हर मिनट एक विफलता संदेश ईमेल करना चाहिए। जब मैंने इसे काम कर लिया है, तो मैं लाइन को टिप्पणी करता हूं।

अपने प्रश्न पर वापस: आप संभवतः मौजूदा क्रॉन जॉब को अक्सर चलाने के लिए संशोधित नहीं करना चाहते हैं, क्योंकि दोनों इसे वापस बदलने के लिए भूल जाने का एक मौका है, और क्योंकि आपका cron.hourly, cron.daily, या cron.whatever चल रहा है आपके पास वहां जो कुछ भी है, उसके आधार पर इसके दुष्प्रभाव हो सकते हैं। यह सुनिश्चित करने के लिए कि आप स्क्रिप्ट को उसी वातावरण में चला रहे हैं, जब वह क्रोन से कहा जाता है, मैं ऊपर "मेरी" ट्रिक को संशोधित करने की सलाह दूंगा:

स्क्रिप्ट को सीधे चलाने के लिए अपने crontab में एक पंक्ति जोड़ें:

 * * * * * root /etc/cron.hourly/customscript

इस तरह से आप इसे जितनी बार चाहें इसे चला सकते हैं।


धन्यवाद - अगर मैं इसके लिए सही उत्तर के रूप में वोट कर सकता हूं, तो मैं करूंगा!
गारेथ_बोल्स

0

मुझे अधिक प्रत्यक्ष समाधान का पता नहीं है, लेकिन आप अपनी स्क्रिप्ट के लिए निजी के साथ एक उपयोगकर्ता (कह सकते हैं, crontest) बना सकते हैं और संपादन करके स्क्रिप्ट का परीक्षण करने के लिए 'crontest' उपयोगकर्ता के लिए उपयोगकर्ता-विशिष्ट crontab का उपयोग कर सकते हैं यह अगले दो मिनट में स्क्रिप्ट चलाने के लिए है।

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