2013-01-25 23 views
12

मैं हर 45 मिनट (प्रत्येक घंटे के 45 वें मिनट) को स्क्रिप्ट चलाने के लिए तैयार नहीं हूंक्या निम्न क्रॉन अभिव्यक्ति का मतलब हर 45 मिनट है?

उदा। 10:00, 10:45, 11:30, 12:15, और इसी तरह।

*/45 * * * * 

मुझे यकीन नहीं है कि यह सही अभिव्यक्ति है।

+1

मैं कहूंगा कि यह है। दूसरी तरफ 45 मिनट के चक्रों और क्रॉन में एक दिन को उस गणना के साथ हर बार विभाजित करना है। – Gjordis

+1

मैं कहूंगा कि यह नहीं है। मेरा मानना ​​है कि अलग crontab फ़ील्ड अलग हैं, इसलिए मिनटों के लिए '*/45' शायद' 0,45' –

+0

जैसा ही है * * 1 * * * * स्पर्श/घर/उपयोगकर्ता/testfile कार्यों के साथ इसका परीक्षण किया गया है। उबंटू 10.04 डिफ़ॉल्ट क्रोंटब – Gjordis

उत्तर

13

मुझे लगता है (संपादित करें: मैं यकीन है कि अब तक हूँ) है कि यह आप क्या चाहते हैं नहीं करता है: खेतों अलग हैं, और मिनट के लिए */450,45 से ज्यादा कुछ नहीं है। मैं निम्नलिखित तीन प्रविष्टियों का उपयोग होता अगर */45 काम नहीं करता है:

0,45 0-23/3 * * * 
30 1-23/3 * * * 
15 2-23/3 * * * 

आप विक्सी क्रॉन स्रोतों में entry.c फ़ाइल पर एक नज़र डालें, तो आप देखेंगे कि प्रत्येक प्रविष्टि के प्रत्येक क्षेत्र पार्स किया गया है get_list द्वारा और उस फ़ील्ड के लिए अनुमत मानों के बिटमैप्स के रूप में प्रतिनिधित्व किया गया। यह लगभग किसी भी "स्मार्ट" व्याख्या को रोकता है, क्योंकि */45 और 0,45 का भेद इस चरण में खो गया है ... लेकिन MIN_STAR ध्वज है, * की उपस्थिति में सेट (*/45 सहित)। तो हम cron.c पर एक नज़र डालें, एक ऐसी जगह जहां MIN_STAR की जांच की जाती है, यह जानने के लिए कि यह हमारी समस्या से संबंधित नहीं है। अब हम यह सुनिश्चित करने के लिए जानते हैं कि */45 का अर्थ है "प्रत्येक 45 वें मिनट हर घंटे": 0:00, 0:45, 1:00, 1:45 और इसी तरह। ,

कदम भी तो "हर दो घंटे" कहने के लिए अगर आप चाहते हैं, एक तारक के बाद अनुमति दी जाती है बस:

यहाँ दो जवाब आत्मविश्वास से, विपरीत बताते हुए मैनुअल में एक दुर्भाग्यपूर्ण पारित होने के हवाले से थे का उपयोग "*/2"

हम एक 24 घंटे दिन है, यहाँ तक कि "0:00 से हर दो घंटे, हर दिन" घंटों की संख्या, कर रहे हैं और "हर दो घंटे आम ​​तौर पर" पृथक युक्त भाग्यशाली रहे हैं। बहुत बुरा है कि मैनुअल गैर-मामूली मामलों को दस्तावेज करने के लिए काफी दूर नहीं गया, यह धारणा है कि * */22 का मतलब हर 22 घंटे है। ऐसा नहीं होता। एक चरण के साथ स्टार क्षेत्र में की सूची के लिए सिर्फ एक शॉर्टेंड है जहां इसका उपयोग है; यह अन्य क्षेत्रों के साथ बातचीत नहीं करता है।

+0

बहुत रोचक। अब, मैं सोच रहा हूं, केवल दो फ़ील्ड, अर्थात्, मिनट और घंटे मानते हुए, निम्न पैटर्न क्या हल करेगा? '*/45 */2' मुझे लगता है कि दो घंटे 45 मिनट के ब्लॉक में विभाजित किए जाएंगे क्या मेरी सोच सही है? –

+0

@ अलगाव यह गलत है: फ़ील्ड स्वतंत्र हैं। */45 मिनटों के लिए मतलब है "या तो xx: 00 या xx: 45", */2 घंटों के लिए "00: xx", "02: xx" ... "22: xx"। चौराहे "00:00, 00:45, 02:00, 02:45" इत्यादि देता है। –

0

क्रॉन के मूल समय पर, आपका सिस्टम चलाने के लिए कोई क्रोनबॉज देखने के लिए प्रति मिनट एक बार जांचता है। यह आपके क्रोंटब को देखेगा, और यदि यह दौड़ने का समय है, तो पोफ, यह चलता है! लेकिन हर 45 मिनट एक अंतराल होता है जो हमेशा घड़ी के चेहरे पर 15 मिनट के निशान पर मारा जाएगा। उदाहरण के लिए शून्य से शुरू करने वाला पहला 0:45 है। अगला शून्य से 9 0 मिनट या 1:30 होगा, अगला 2:15 होगा ... इतनी आसानी से आप देख सकते हैं कि प्रत्येक उदाहरण के लिए आप अपनी स्क्रिप्ट निष्पादित करना चाहते हैं, मिनट का हाथ 12, 3, 6, या 9। यदि आप हर 15 मिनट में अपनी स्क्रिप्ट निष्पादित करते हैं, और यह देखने के लिए घंटे की जांच करें कि यह सही है या नहीं, तो आप अपनी स्क्रिप्ट निष्पादित कर सकते हैं। आप शायद एक टेबल का उपयोग करेंगे, या आप मॉड्यूलो सुविधा का भी उपयोग कर सकते हैं। चीयर्स!

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