हिन्दी

डेवलपर टूल · क्रोंटैब जनरेटर

Cron चरण और रेंज सिंटैक्स: */15, 1-5, सूचियाँ और वे कैसे संयोजित होते हैं

· यह काम किस प्रकार करता है

Cron अनुसूची बनाना डेवलपर-वर्कफ़्लो

मिनट चिह्नों को एक कैटेगरी, एक सूची और एक चरणबद्ध अनुक्रम में समूहीकृत किया गया है
मूल ToolAcre वेक्टर चित्रण

चरण, कैटेगरी और सूचियाँ Cron सिंटैक्स का हिस्सा हैं जिन्हें लोग बिना समझे कॉपी करते हैं। यह पोस्ट प्रत्येक को समझाती है कि वे कैसे घोंसला बनाते हैं, और आश्चर्य जैसे */7 का अर्थ 'हर सात दिन' नहीं है।

हर 15 मिनट, लेकिन केवल 9 से 5 - भोली-भाली अभिव्यक्ति रात में भी भड़कती है

"कार्यालय समय के दौरान प्रत्येक पंद्रह मिनट" में दो स्वतंत्र प्रतिबंध शामिल हैं। मिनट फ़ील्ड को चौथाई-घंटे के निशान की आवश्यकता होती है, जबकि घंटे फ़ील्ड को एक सीमित अवधि की आवश्यकता होती है। केवल `*/15 * * * *` लिखने से पहला भाग हल हो जाता है और फिर भी पूरी रात रन बनते रहते हैं। सप्ताह के दिनों के बारे में कुछ भी कहने से पहले अभिव्यक्ति को दोनों बाधाओं को एन्कोड करना होगा।

ToolAcre पांच शेड्यूल फ़ील्ड को पार्स करता है, कमांड को नहीं। `*/15 9-17 * * 1-5` से प्रारंभ करें, फिर वाक्य और अगले पूर्वावलोकन का निरीक्षण करें। वह चेक `9-17` को मिनट की स्थिति में डालने या कार्यदिवस फ़ील्ड को अप्रतिबंधित छोड़ने की सामान्य गलती को पकड़ता है। जनरेटर एक अभिव्यक्ति बनाता है और समझाता है; यह किसी कार्य को स्थापित या निष्पादित नहीं करता है.

रेंज - 1-5 और 9-17 एक ही क्षेत्र के भीतर समावेशी विस्तार के रूप में

एक हाइफ़न एक फ़ील्ड के अंदर एक समावेशी कैटेगरी बनाता है। `9-17` घंटे की स्थिति में नौ मानों तक विस्तारित होता है: 9 से 17 तक। इसी तरह, कार्यदिवस की स्थिति में `1-5` का विस्तार सोमवार से शुक्रवार तक होता है क्योंकि यह पार्सर रविवार को 0, सोमवार को 1 इत्यादि को मैप करता है। दोनों समापन बिंदु भाग लेते हैं, इसलिए 17:00 चयनित घंटे की सीमा के अंदर है।

कैटेगरी किसी फ़ील्ड सीमा के पार नहीं लपेटी जा सकतीं। पार्सर `17-9` जैसे बैकवर्ड फॉर्म को अस्वीकार कर देता है और वांछित मानों को दो सूची आइटमों में विभाजित करने का सुझाव देता है। यह इनकार उपयोगी है क्योंकि शेड्यूलिंग उत्पादों के बीच रैपिंग नियम अलग-अलग होते हैं। यहां उन मानों के बीच एक सीमा हमेशा ऊपर की ओर बढ़ती है जो पहले से ही फ़ील्ड की संख्यात्मक या स्वीकृत-नाम सीमाओं को संतुष्ट करती है।

चरण - */15 और 9-17/2, और क्यों चरण लगातार गिनती के बजाय फ़ील्ड की निचली सीमा पर पुनरारंभ होता है

एक स्लैश प्रारंभिक बिंदु से प्रत्येक nवें मान को चुनता है। मिनट फ़ील्ड में `*/15` अपने न्यूनतम, शून्य से शुरू होता है, और 0, 15, 30 और 45 तक विस्तारित होता है। `9-17/2` 9 से शुरू होता है और 9, 11, 13, 15 और 17 देता है। चरण एक क्षेत्र से संबंधित है; यह घंटे की सीमाओं में बीते हुए मिनटों की गिनती नहीं करता है।

पार्सर एक कदम के साथ एक खाली शुरुआत को भी स्वीकार करता है। मिनट फ़ील्ड में `5/15` का अर्थ है 5, 20, 35 और 50 क्योंकि अंतर्निहित ऊपरी समापन बिंदु 59 है। चरण सकारात्मक पूर्णांक होने चाहिए और फ़ील्ड की पूर्ण सीमा के आकार से अधिक नहीं हो सकते। एक शून्य, गैर-संख्यात्मक या बड़े चरण को अनुमानित व्याख्या के बजाय फ़ील्ड-विशिष्ट सत्यापन त्रुटि प्राप्त होती है।

सूचियाँ मानों, कैटेगरी और चरणबद्ध कैटेगरी को एक फ़ील्ड में संयोजित कर सकती हैं

अल्पविराम एक ही क्षेत्र में कई टुकड़ों को जोड़ते हैं। एक सरल `1,15,30` तीन मिनट के मान बताता है। अधिक विस्तृत इनपुट एक एकल मान, एक समावेशी सीमा और एक चरणबद्ध सीमा को जोड़ सकता है: परीक्षण किया गया `0,10-20/5,59` 0, 10, 15, 20 और 59 तक विस्तारित होता है। डुप्लिकेट परिणाम हटा दिए जाते हैं और विस्तारित मानों को बाद की गणनाओं में उपयोग करने से पहले क्रमबद्ध किया जाता है।

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

कार्यान्वित उदाहरण: */15 9-17 * * 1-5 - इसके द्वारा उत्पादित मिनटों और 17:45 एज केस की गणना करना

`*/15 9-17 * * 1-5` के लिए, मिनट मान 00, 15, 30 और 45 हैं; घंटे 09 से 17 तक हैं; और कार्यदिवस मान सोमवार से शुक्रवार हैं। प्रत्येक शामिल कार्यदिवस पर पहला उम्मीदवार 09:00 है और अंतिम उम्मीदवार 17:45 है। कोई 18:00 नहीं है क्योंकि 18 घंटे की सीमा से बाहर है।

अंतिम-रन एज यह दर्शाती है कि फ़ील्ड विस्तार संवादी शॉर्टहैंड को मात क्यों देता है। "नौ से पांच" का मतलब एक पाठक के लिए 17:00 पर रुकना और दूसरे के लिए पूरे पांच बजे का घंटा शामिल करना हो सकता है। Cron का घंटा फ़ील्ड एक घंटे की बाल्टी का चयन करता है, फिर मिनट फ़ील्ड उसके अंदर की स्थिति का चयन करता है। यदि 17:45 अवांछित है, तो वांछित सीमा को एक अलग अभिव्यक्ति या कमांड-साइड तर्क की आवश्यकता होती है।

महीने का एक दिन का चरण प्रत्येक माह 1 दिन से विस्तारित होता है; यह एक बीते हुए सप्ताह का अंतराल नहीं है

महीने के दिन में `*/7` उस फ़ील्ड के न्यूनतम 1 से विस्तारित होता है, जिससे 1, 8, 15, 22 और 29 का उत्पादन होता है, जहां वे तिथियां मौजूद हैं। जब अगला महीना शुरू होता है, तो फ़ील्ड फिर से 1 पर शुरू होती है। इसलिए यह चयनित कैलेंडर तिथियों का वर्णन करता है, न कि लगातार आगे बढ़ने वाले सात दिनों के अंतराल का। फरवरी और छोटे महीनों में कुछ उच्च तारीखों का अभाव है।

एक ही वाक्यविन्यास का दूसरे क्षेत्र में भिन्न आरंभिक मान होता है। `*/7` मिनट 0 से शुरू होते हैं, जबकि महीने के `*/7` दिन 1 से शुरू होते हैं। ToolAcre का पार्सर प्रत्येक फ़ील्ड विनिर्देश से अनुक्रम प्राप्त करता है, और इसका पूर्वावलोकन कैलेंडर तिथियों की खोज करता है। वास्तविक साप्ताहिक ताल के लिए, महीने के दिन के कदम को बीती हुई अवधि मानने के बजाय सप्ताह के दिन को सीमित करें।

असमर्थित ऑपरेटरों को अन्य Cron बोली के रूप में व्याख्या करने के बजाय अस्वीकार कर दिया जाता है

यह पांच-फ़ील्ड पार्सर `L`, `W`, `#` या `?` लागू नहीं करता है। उन पात्रों को चुपचाप खारिज नहीं किया जाता है और पोर्टेबल क्रोंटैब सिंटैक्स के रूप में प्रस्तुत नहीं किया जाता है। छह फ़ील्ड को भी इस स्पष्टीकरण के साथ अस्वीकार कर दिया गया है कि अतिरिक्त अग्रणी स्थिति इस मार्ग द्वारा पढ़े जाने वाले प्रारूप के बजाय सेकंड-उन्मुख शेड्यूलर शैली से संबंधित है।

सीमा जानबूझकर है: मिनट, घंटा, महीने का दिन, महीना और सप्ताह का दिन यहां पूर्ण स्थितिगत व्याकरण हैं। किसी अन्य शेड्यूलर से किसी अभिव्यक्ति को स्थानांतरित करने से पहले, उसके फ़ील्ड्स की गणना करें और उसके ऑपरेटरों की पहचान करें। जनरेटर अपनी बोली को मान्य कर सकता है; यह क्वार्ट्ज, सिस्टमड कैलेंडर सिंटैक्स या क्लाउड सेवा की विविधता को प्रमाणित नहीं कर सकता है।

टेकअवे: चरणों का अर्थ है 'सीमा के नीचे से शुरू करना' - और जनरेटर शब्दों में एक चरण अभिव्यक्ति समझाता है जिसे आप जांच सकते हैं

कैटेगरी एक समावेशी अवधि को परिभाषित करती हैं, अल्पविराम टुकड़ों को मर्ज करता है, और फ़ील्ड-विशिष्ट शुरुआत से नमूना मानों को काट देता है। उस क्रम में उन परिचालनों को पढ़ने से एक सघन टोकन एक सीमित सेट में बदल जाता है जिसका निरीक्षण किया जा सकता है। यह कॉपी किए गए वाक्यांश पर भरोसा किए बिना 17:45 जैसे किनारों की भी व्याख्या करता है, जिनके लेखक का मतलब कुछ और हो सकता है।

जनरेटर का उपयोग समीक्षा सतह के रूप में करें: अभिव्यक्ति दर्ज करें, विवरण पढ़ें, चेतावनियों का निरीक्षण करें और इच्छित क्षेत्र में अगले पांच वॉल-क्लॉक रन की तुलना करें। फिर सत्यापित पांच फ़ील्ड को अपने परिवेश में वास्तविक कमांड के बगल में रखें। शेड्यूल निर्माण और कार्य निष्पादन अलग-अलग जिम्मेदारियाँ हैं।