क्रोन और एनाक्रोन के बीच संबंध के बारे में उलझन


19

मैं व्यर्थ में गुगली कर रहा हूं कि कैसे क्रोन और एक्रॉन एक साथ काम करते हैं की एक सामान्य व्याख्या को चालू करने के लिए। मैन पेज इस बिंदु पर मेरे लिए एक गोता के बहुत गहरे हैं।

मैं भ्रमित हो जाता हूं क्योंकि मैं कॉन्टैब के लिए कार्यों को जोड़ता हूं, और वह काम करता है, लेकिन जब मैं उन्हें कॉट्रैब से हटा देता हूं, तो वे अभी भी एनाक्रॉन के तहत चलते हैं। मैं /etc/cron.daily में कार्यों को देखता हूं, लेकिन मुझे यकीन नहीं है कि वे वहां कैसे पहुंचे। क्रोन मेरे सिस्टम पर हमेशा चल रहा है, लेकिन एनाक्रॉन नहीं। वास्तव में, मुझे लगता है कि क्रोन द्वारा एनाक्रॉन शुरू किया गया है!

मूल रूप से मैं कार्यों को जोड़ने और हटाने के बारे में एक उपयोगकर्ता-स्तर का परिचय चाहता हूं, क्योंकि आसानी से googleable उत्तर जो आपको crontab को संपादित करने के लिए स्पष्ट रूप से पूरा नहीं करते हैं। एक ट्यूटोरियल के लिए लिंक ठीक होगा।

जवाबों:


19

दोनों cronऔर anacronडेमन हैं जो उपयोगकर्ता द्वारा परिभाषित समय में आवर्ती कार्यों के निष्पादन को एक निश्चित बिंदु तक निर्धारित कर सकते हैं।

के बीच मुख्य अंतर cronऔर anacronपूर्व मानता है कि कि इस प्रणाली लगातार चल रही है। यदि आपका सिस्टम बंद है और आपके पास इस समय के दौरान कोई काम निर्धारित है, तो नौकरी कभी निष्पादित नहीं होती है।

दूसरी ओर anacronach एक्ट्रोनिस्टिक ’है और ऐसे सिस्टम के लिए बनाया गया है जो 24x7 नहीं चल रहे हैं। इसके लिए काम करने के anacronलिए समय-मुहर लगी फ़ाइलों का उपयोग करके यह पता लगाने के लिए कि आखिरी बार इसकी आज्ञाओं को कब निष्पादित किया गया था। यह भी करता है /etc/anacrontabजैसे एक फ़ाइल को बनाए रखता cronहै। इसके अलावा, cron.dailyहर दिन एनाक्रॉन चलाता है। इसलिए, anacronदिन में केवल एक बार नौकरी चला सकते हैं, लेकिन cronहर मिनट जितनी बार भी चला सकते हैं।

से man anacrontab:

निष्पादित होने पर, एनाक्रॉन एक कॉन्फ़िगरेशन फ़ाइल से सामान्य रूप से / etc / anacrontab (देखें anacrontab (5)) नौकरियों की एक सूची पढ़ता है। इस फ़ाइल में उन नौकरियों की सूची है जो एनाक्रॉन नियंत्रित करती है। प्रत्येक नौकरी प्रविष्टि दिनों में एक अवधि, मिनटों में देरी, एक अद्वितीय नौकरी पहचानकर्ता और एक शेल कमांड निर्दिष्ट करती है।

प्रत्येक नौकरी के लिए, एनाक्रॉन यह जांचता है कि क्या यह नौकरी पिछले एन दिनों में निष्पादित की गई है, जहां n उस नौकरी के लिए निर्दिष्ट अवधि है। यदि नहीं, तो एनाक्रॉन देरी पैरामीटर के रूप में निर्दिष्ट मिनटों की संख्या की प्रतीक्षा करने के बाद, नौकरी के शेल कमांड को चलाता है।

कमांड से बाहर निकलने के बाद, एनाक्रॉन उस नौकरी के लिए एक विशेष टाइमस्टैम्प फ़ाइल में तारीख दर्ज करता है, इसलिए यह पता चल सकता है कि उसे फिर से कब निष्पादित करना है। समय की गणना के लिए केवल तारीख का उपयोग किया जाता है। घंटे का उपयोग नहीं किया जाता है।

इसका मतलब है, यदि किसी कार्य को प्रतिदिन चलाया जाना है और कंप्यूटर को उस समय के दौरान बंद कर दिया गया था, जब एनाक्रॉन चलाया जाता है, तो यह देख सकता है कि यह कार्य अंतिम बार 24 घंटे से अधिक चला था और कार्य को सही ढंग से निष्पादित किया गया था।

उदाहरण के लिए यदि आप निम्नलिखित को निर्दिष्ट करते हैं /etc/anacrontab:

7       15      test.daily      /bin/sh /home/username/script.sh

और जिस दिन script.shनौकरी को अंजाम देना है, अगर सिस्टम नहीं चल रहा है, तो सिस्टम के वापस आने anacronके script.sh15 मिनट बाद निष्पादित होगा ।

कुछ संदर्भ:


धन्यवाद, कि डिजिटल महासागर ट्यूटोरियल विशेष रूप से अच्छा है, क्योंकि वे अक्सर होते हैं। मुझे यकीन नहीं है कि मैंने इसे कैसे याद किया, इसलिए मैं लिंक की सराहना करता हूं।
ऑर्गेनिक मार्बल

धन्यवाद। इसके बजाय "cron.daily runacacron everyhour", क्या आप आदमी "cron.daily रोजाना एनाक्रॉन चलाता है"?
टिम

इसके लिए धन्यवाद। - मैं अपने anacronसभी VPSes से हटा दिया है क्योंकि वे हमेशा सिस्टम पर हैं। (कोई विचार नहीं है कि यह पहली जगह में कैसे मिला, मैंने इसके बारे में नहीं सुना।) मेरी crontabप्रविष्टियाँ (दैनिक, साप्ताहिक, ...) अब सभी अपेक्षित समय पर चलती हैं।
एडम्बियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.