2016-09-05 5 views
12

मैं अपने सिस्टम में निम्नलिखित क्रॉन अभिव्यक्ति है:क्या कोई अंतर है? और * क्रॉन अभिव्यक्तियों में? अजीब उदाहरण

0 0 0/1 1/1 * ? * 

और आप जानते हैं क्या? मुझे नहीं पता कि इसका क्या अर्थ है। जिस व्यक्ति ने इसे लिखा है वह अगले 2 सप्ताह तक उसकी छुट्टियों पर है इसलिए मुझे खुद को पता लगाना है। प्रलेखन here

पाया जा सकता है documentation के अनुसार हमने:

* * * * * * * 
| | | | | | | 
| | | | | | +-- Year    (range: 1970-2099) 
| | | | | +---- Day of the Week (range: 1-7 or SUN-SAT) 
| | | | +------ Month of the Year (range: 0-11 or JAN-DEC) 
| | | +-------- Day of the Month (range: 1-31) 
| | +---------- Hour    (range: 0-23) 
| +------------ Minute   (range: 0-59) 
+-------------- Second   (range: 0-59) 

ठीक है, मैं आपको बता दूँ कि मैं क्या सोचते हैं: मुझे विश्वास है कि अभिव्यक्ति का अर्थ है:

start when: 
    seconds:  0 
    minutes:  0 
    hours:   0 
    dayOfMonth  1 
    monthOfYear  any 
    dayOfWeek  any 
    year   any 

run every: 
    1    hour 
    1    dayOfWeek 
when: 
    dayOfWeek same as on first execution 

हालांकि उपलब्ध क्रॉन अभिव्यक्ति मॉनीटर कहते हैं कि इसका मतलब केवल हर घंटे होता है। एक है जो लिखा है कि वरिष्ठ जावा देव के रूप में उन्होंने बजाय ऐसी अभिव्यक्ति लिखने के लिए किसी भी कारण जाना जाता है चाहिए:

0 0 * * * * * 

हम org.springframework.scheduling.quartz.QuartzJobBean का उपयोग करें।

संक्षिप्त सारांश

ठीक है, मुझे लगता है कि मेरे सवाल है: 0 0 0/1 1/1 * ? * और 0 0 * * * * * के बीच क्या अंतर है?

संपादित करें:

The documentation यहां पाया जा सकता।

+0

इस अभिव्यक्ति को कितनी बार लिखा गया था? हो सकता है कि क्वार्ट्ज में विशेष वर्णों में सीमाएं थीं जब इसे – joc

+1

@joc बहुत पहले बनाया गया था, और ऐसा लगता है कि दिन में एक दिन में '?' का उपयोग करने की आवश्यकता थी ओफविक और दिन ओफमोन्थ: 'दिन-दर-दिन दोनों निर्दिष्ट करने के लिए समर्थन सप्ताह और एक महीने का मूल्य पूरा नहीं होता है (आपको वर्तमान में इन क्षेत्रों में से किसी एक में '?' वर्ण का उपयोग करना चाहिए)। – xenteros

+1

अच्छा पकड़ !! मुझे यह नहीं पता था, लेकिन जैसा कि आपने प्रश्न 0 0 * * में कहा था? * '0 0/1 1/1 * के बराबर अभिव्यक्ति है? * 'IMO कम से कम आजकल – joc

उत्तर

12

0/1 साधन घंटे 0 पर शुरू और प्रत्येक 1 घंटे
1/1 दोहराने महीने के पहले दिन शुरू करते हैं और प्रत्येक 1 दिन

तो इस पैटर्न क्रॉन एक बार प्रत्येक घंटे कार्यान्वित करता है, महीने के दिन इसे प्रारंभ करने पर अमल है और हर दिन खुद को दोहराना।

dayOfWeek में से एक या dayOfMonth में ? उपयोग करने के लिए एक आवश्यकता नहीं है: दोनों को एक दिन के सप्ताह और एक दिन के अनुसार महीने के मूल्य निर्दिष्ट करने के लिए
समर्थन (पूरा नहीं हुआ है कि आप वर्तमान में उपयोग करना चाहिए इन क्षेत्रों में से एक में '?' चरित्र)। - xenteros 7 मिनट पहले

फिर, 0 0 * * * ? * (और नहीं 0 0 * * * *, ? अनिवार्य रूप में आप टिप्पणी की) के साथ एक ही अभिव्यक्ति हो जाएगा, सेकंड और मिनट अनदेखी और अन्य तत्वों के प्रत्येक मान ले, प्रत्येक घंटे और हर रोज पर अमल होगा।


आपकी जानकारी अनुसार:

0 0 0/1 1/1 * ? * 
| | | | | | | 
| | | | | | +-- Year    (range: 1970-2099) 
| | | | | +---- Day of the Week (range: 1-7 or SUN-SAT) 
| | | | +------ Month of the Year (range: 0-11 or JAN-DEC) 
| | | +--------- Day of the Month (range: 1-31) 
| | +------------- Hour    (range: 0-23) 
| +---------------- Minute   (range: 0-59) 
+------------------ Second   (range: 0-59) 

और विशेष वर्ण का this explanation:

* ("सभी मूल्यों")

के भीतर सभी मान चुनने के लिए इस्तेमाल किया एक क्षेत्र उदाहरण के लिए, "" मिनट फ़ील्ड में "* हर मिनट" का अर्थ है।

? ("कोई विशेष मूल्य")

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

/

वेतन वृद्धि निर्दिष्ट करने के लिए प्रयोग किया जाता है। उदाहरण के लिए, सेकंड फ़ील्ड में "0/15" का अर्थ है "सेकंड 0, 15, 30, और 45"। और सेकंड फ़ील्ड में "5/15" का अर्थ है "सेकंड 5, 20, 35, और 50"। आप चरित्र के बाद '/' भी निर्दिष्ट कर सकते हैं - इस मामले में '' 'से पहले' 0 'होने के बराबर है। दिन के महीने में '1/3' का मतलब है "महीने के पहले दिन से शुरू होने वाले हर 3 दिनों में आग लगती है"। * और ?

के बीच


मतभेद ? और भाव में * के बीच अंतर की व्याख्या करने के लिए, सब से पहले इस तालिका पर एक नज़र डालें:

Field Name  Mandatory Allowed Values  Allowed Special Characters 
Seconds   YES   0-59    , - */
Minutes   YES   0-59    , - */
Hours   YES   0-23    , - */
Day of month YES   1-31    , - * ?/L W //allowed '?' 
Month   YES   1-12 or JAN-DEC  , - */
Day of week  YES   1-7 or SUN-SAT  , - * ?/L # //allowed '?' 
Year   NO   empty, 1970-2099 , - */

आप देख सकते हैं ? केवल Day of month और Day of week दोनों में से एक में अनिवार्य है एस और क्वार्ट्ज को बताएगा कि इस मान को परिभाषित नहीं किया गया है, इस प्रकार, दूसरे फ़ील्ड का उपयोग करें (यदि आप ?Day of month में डालते हैं, तो उपयोग किया गया मान Day of week होगा)।

+0

ठीक है, आपका उत्तर उपयोगी है, हालांकि मैं इसे अभी तक स्वीकार नहीं करूंगा, क्योंकि आपने सीधे मेरे प्रश्न का उत्तर नहीं दिया है। '* '' '' 'का उपयोग करने का क्या फायदा है? यदि कोई अन्य उत्तर नहीं है जो अंतर को इंगित करेगा तो मैं इस जवाब को एक या दो दिनों में स्वीकार करूंगा। – xenteros

+3

अच्छी तरह से, वास्तव में आपका प्रश्न है * 0 0/1 1/1 * के बीच क्या अंतर है? * 'और' 0 0 * * * * * '? * लेकिन अंतर '' 'का मतलब है कोई विशिष्ट मूल्य,' * 'का अर्थ है सभी मूल्य – joc

+0

मैंने इस प्रश्न पर एक बक्षीस शुरू किया। अपने उत्तर को बेहतर बनाने के लिए स्वतंत्र महसूस करें। फिलहाल यह एक हफ्ते में सबसे अच्छे जवाब के लिए +50 रिपू ​​है, लेकिन अगर मैं और अधिक पुरस्कार प्राप्त करने में सक्षम हूं। – xenteros

2

वहाँ 0 0 * * * ? * और 0 0 0/1 1/1 * ? *

अलग अंक का विश्लेषण के बीच कोई व्यावहारिक अंतर है:
0/1 और घंटे के लिए * - पहला साधन घंटे 0 हर दिन से शुरू करते हैं और हर घंटे दोहराए जाते हैं, एक दूसरे का अर्थ है: हर घंटे दोहराने
1/1 और * दिनों के लिए - fisrt का मतलब महीने के पहले दिन से शुरू होता है और हर दिन दोहराता है और दूसरे का मतलब हर दिन होता है।

कारण किसी ने जटिल अभिव्यक्ति का उपयोग क्यों किया है, यह परीक्षण करके अभिव्यक्ति का मूल्यांकन किया गया है और किसी ने इसे सरल बनाने के लिए नौकरी नहीं ली है या शायद पिछले क्रॉन संस्करण अलग-अलग काम करता है।

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