इस महीने मेरी क्रोन जॉब क्यों चली?


31

आज 1 नवंबर 2016 या (अस्पष्ट) अंकों में, 2016-11-01 है।

मेरे पास एक उपयोगकर्ता क्रोन जॉब है जो इस प्रकार है:

# m h  dom mon dow   command
33  3   1  */2  *    /home/user/...

यह हर दूसरे महीने को महीने के पहले दिन में 3:33 बजे चलाने के लिए माना जाता है, चाहे वह सप्ताह का कोई भी दिन हो, लेकिन किसी कारण से इसे आज चलाया गया था, भले ही 11 2 से विभाज्य न हो।

क्या कोई मुझे यह समझा सकता है? क्या मेरे द्वारा विभाजन की धारणा 2 गलत है?

संपादित करें: मैं उल्लेख करना भूल गया, मैं cronएक डेबियन 8.6 "जेसी" मशीन पर "3.0pl1-127 + deb8u1" संस्करण चला रहा हूं ।



तो आप वर्ष 1 के 2016 महीने के 11 वें दिन के बारे में बात कर रहे हैं। :) (अमेरिका में सबसे आम तिथि आदेश माह दिन वर्ष है।)
चूजों

@ हिक्स इस प्रश्न के संपादित इतिहास की जांच करते हैं, मैंने मूल रूप से आपके द्वारा उल्लिखित प्रारूप का इस्तेमाल किया है ;-)
comfreak

@ क्या आपको महीना / दिन / वर्ष से मतलब है?
user253751

@immibis सं ... comfreak: lol
चूजों

जवाबों:


61

यह /एक अंकगणितीय अभिव्यक्ति नहीं है, इसके बजाय यह मानों की अनुमत सीमा पर "चरण मान" का वर्णन करता है । इसलिए, चूंकि महीने हमेशा 1इसके बजाय शुरू होते हैं 0, /2इसका मतलब "हर दूसरे मूल्य को लेना" होगा, जिसके परिणामस्वरूप (1, 3, 5, 7, 9, 11) होगा।

यह मैनुअल पेज में भी अस्वीकृत है, हालांकि यह भयानक स्पष्ट और समझने में आसान नहीं है:

चरण मानों का उपयोग श्रेणियों के साथ संयोजन में किया जा सकता है। "<संख्या>" के साथ एक सीमा का पालन करते हुए सीमा के माध्यम से संख्या के मूल्य की सीमा को निर्दिष्ट करता है। उदाहरण के लिए, "0-23 / 2" का उपयोग हर दूसरे घंटे (कमांड V7 मानक में विकल्प "0,2,4,6,8,10,12,14,16 विकल्प को निष्पादित करने के लिए घंटों के क्षेत्र में किया जा सकता है" , 18,20,22 ")। तारांकन के बाद भी चरणों की अनुमति है, इसलिए यदि आप "हर दो घंटे" कहना चाहते हैं, तो बस "* / 2" का उपयोग करें।


2
आपके उत्तर के लिए धन्यवाद, मैन मैन पेज को फिर से पढ़ने और मेरे दिमाग में इस के माध्यम से काम करने के बाद मैंने इसे महसूस किया। मैं आमतौर पर केवल छोटी अवधि की क्रोन नौकरियों के साथ काम कर रहा था जहां संख्या 0 से शुरू होती है और मेरी धारणा वास्तव में एक तरह से समझ में आती है।
comfreak

18
मैंने सिर्फ यह पूछा कि यह प्रश्न अधिक बार क्यों नहीं पूछा गया और एक ही निष्कर्ष पर पहुंचा: क्योंकि कुछ लोग महीने में एक "*" किसी भी चीज से नौकरी चलाते हैं।
स्वेन

एक प्रश्न, यदि संख्या विभाजित नहीं होती है, तो क्या होगा */5? क्या यह 1,6,11,1,6 ... या यह 1,6,11,4,9 होगा ...? मैंने मान लिया कि "मूल्यों की अनुमत सीमा से अधिक" का अर्थ है कि इसकी कोई स्मृति नहीं है, लेकिन अब मैं इसके बारे में इतना सुनिश्चित नहीं था।
मारियससुरम

@ मार्सीसुरम: पहला संस्करण। फिर, यह एक अंकगणितीय ऑपरेशन नहीं है। crondबस संभावित मूल्यों की सूची लेता है, एक बार चयनकर्ता को लागू करता है और फिर इन परिणामों का बार-बार उपयोग करता है।
स्वेन

4

आज नवंबर में पहला दिन है।

* (2) का अर्थ है कि आपका क्रोनजॉब हर दूसरे महीने में जैसा कि आप कहेंगे, निष्पादित करेगा।

इसलिए अगले महीने (दिसंबर) क्रोनजोब को निष्पादित नहीं किया जाएगा, लेकिन इसके बाद का महीना (जनवरी) होगा।

इस महीने (अक्टूबर) से पहले के महीने में क्रोनजोब को निष्पादित नहीं किया गया था। लेकिन सितंबर में यह हुआ था।


1
तो आपको लगता है कि */2महीने के क्षेत्र में 1-11/2इसके बजाय के बराबर है 2-12/2। मैं यह नहीं कह रहा कि आप गलत हैं, लेकिन क्या आप किसी भी सहायक दस्तावेज का उत्पादन कर सकते हैं?
MadHatter

@ माधेटर स्वेन ने इसे अच्छी तरह समझाया।
अनाथ 12

1
मैं सहमत हूं, और सभी के सर्वश्रेष्ठ उन्होंने आधिकारिक स्रोतों का हवाला दिया।
मदहैटर

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