क्रमिक रूप से क्रमिक रूप से कई @daily crontab प्रविष्टियाँ संसाधित की जाती हैं?


22

मैं चाहता हूं कि हर दिन, क्रमिक रूप से, मेरे द्वारा निर्दिष्ट आदेश में हर दिन दो नौकरियां चलें। क्या यह कोंट्राब मज़बूती से मुझे क्या चाहिए?

@daily job1
@daily job2

मैं वे एक के बाद एक को चलाने संभालने हूँ, लेकिन मैं वेब खोज के द्वारा या इन manpages में से किसी से इस सवाल का जवाब खोजने में असमर्थ था: cron(1), crontab(1), crontab(5)

स्पष्ट रूप से ऊपर का क्रैटाब वह नहीं करेगा जो मैं चाहता हूं यदि क्रोन @dailyसमानांतर या अप्रत्याशित क्रम में अनुसूचित चीजों को चलाता है ।

मुझे पता है कि मैं केवल एक शेल स्क्रिप्ट बना सकता हूं ताकि उन्हें बंद कर दिया जा सके, मुझे बस उत्सुकता है कि क्रोन को कैसे काम करना चाहिए (और मैं परीक्षण डेटा इकट्ठा करने या स्रोत कोड पढ़ने के लिए बहुत आलसी हूं)।

क्रोन cronपैकेज द्वारा प्रदान किया जाता है। OS उबंटू 10.04 LTS (सर्वर) है।


क्या आपको पता है कि cronपैकेज द्वारा किस क्रोन को प्रदान किया जा रहा है ? लगभग सभी क्रोन डेमन्स जो मुझे पता है कि क्रम में इसे संभालेंगे, और सिंक्रोनाइज़ करें, आमतौर पर पहले प्रत्येक फ़ाइल को वर्णमाला क्रम में पार्स करते हैं (हालांकि कुछ इसे आरोही क्रम में रन के बीच समय की राशि से करते हैं), और फिर लाइन क्रम में अंदर की नौकरियां।
क्रिस डाउन

5
तथ्य यह है कि यह अंडर-निर्दिष्ट है आमतौर पर इसका मतलब है कि इसे कार्यान्वयन तक छोड़ दिया गया है, और आमतौर पर इस तरह के व्यवहार पर निर्भर नहीं करना सबसे अच्छा है। संभवतः नौकरियों के अनुक्रम को रखने के लिए यह क्लीनर और बेहतर आयोजित किया जाता है जहां अनुक्रम अलग-अलग crontab प्रविष्टियों के बजाय अपनी स्क्रिप्ट में मायने रखता है।
jw013

@ क्रिसडाउन: विक्सी क्रोन, मुझे लगता है। packages.ubuntu.com/lucid/cron
एडम Monsen

1
मेरा सुझाव है कि यदि आप वास्तव में उन्हें क्रम में चलाना चाहते हैं, तो एक मिनट बाद निष्पादित करें।
केविन

@ jw013 और केविन: सहमत हैं, लेकिन यह मेरा सवाल नहीं है।
एडम मोनसेन

जवाबों:


26

स्रोत पर त्वरित नज़र के बाद (डेबियन निचोड़ में, जो मुझे लगता है कि एक ही संस्करण है), यह किसी दिए गए फ़ाइल के भीतर प्रविष्टियों की तरह दिखता है और उसी समय के साथ क्रम में निष्पादित होता है। इस उद्देश्य के लिए, @dailyऔर 0 0 * * *समान हैं (वास्तव में इस क्रोन में @dailyसमान हैं 0 0 * * *)।

मैं बोर्ड पर इस पर भरोसा नहीं करेगा। यह संभव है कि एक दिन कोई यह तय करेगा कि क्रोन को समानांतर में नौकरियों को चलाना चाहिए, इन 32-कोर सीपीयू का लाभ उठाने के लिए जिसमें 31 कोर चल रहे हैं। क्रोन स्रोत में सामना करने वाले इस 20 वर्षीय टूडू आइटम को लागू करते समय ऐसा किया जा सकता है:

इन सभी को ध्वजांकित और लोड-सीमित किया जाना चाहिए; इसका अर्थ है कि, इसके बजाय @ मतलब के रूप में "0 * * * *" का अर्थ "हर घंटे के सामने करीब होना चाहिए, लेकिन नहीं है" सिस्टम लोड कम है "। (…) (विक्स, जान 90)

@daily job1; job2यहां लिखना बहुत आसान है। यदि यह महत्वपूर्ण है कि नौकरियां क्रम में निष्पादित होती हैं, तो इसे आप जो लिखते हैं उसका सीधा परिणाम बनाते हैं।

इसके अतिरिक्त, आदेश को स्पष्ट करना उस जोखिम को दूर करता है जो भविष्य के प्रशासक यह सोचकर लाइनों को फिर से व्यवस्थित करेगा कि यह कोई फर्क नहीं पड़ेगा।


5

http://ss64.com/osx/crontab.html (साथ ही अन्य संदर्भ) कहते हैं कि @ डेली के बराबर है

0 0 * * *

जो आधी रात को चलाने के लिए कहता है। मुझे उम्मीद है कि इस तरह की दो लाइनें दोनों को संभवत: आधी रात के करीब लॉन्च की जाएंगी, जिसकी कोई गारंटी नहीं है कि पहले कैसे चलेगी। मैं उनकी टिप्पणी में jw013 के सुझाव से सहमत हूं:

तथ्य यह है कि यह अंडर-निर्दिष्ट है आमतौर पर इसका मतलब है कि इसे कार्यान्वयन तक छोड़ दिया जाता है, और यह आमतौर पर इस तरह के व्यवहार पर निर्भर नहीं होता है। संभवतः नौकरियों के अनुक्रम को रखने के लिए यह क्लीनर और बेहतर आयोजित किया जाता है जहां अनुक्रम अलग-अलग crontab प्रविष्टियों के बजाय अपनी स्क्रिप्ट में मायने रखता है।


यह मदद करता है, धन्यवाद। मैं सहमत हूं @ jw013 का सुझाव मान्य है, लेकिन यह वह प्रश्न नहीं है जो मैंने पूछा था। मुझे लगता है कि मुझे निश्चित उत्तर के लिए वास्तविक स्रोत से परामर्श करना होगा, क्योंकि यह संभवतः, वास्तव में, कार्यान्वयन-विशिष्ट है।
एडम मोनसेन

0

@ लिग एक एकल स्क्रिप्ट का उपयोग करने पर टिप्पणी करते हैं जब यह चीजों को चलाने के लिए आयात होता है, तो यह उचित है।

cron.dailyफ़ाइलों को चलाने के समय निर्दिष्ट नहीं है। यह मेरा अनुभव रहा है कि वे सीरियसली चलते हैं। यह कई पृष्ठभूमि नौकरियों के रूप में समझ में आता है जो लैपटॉप या अन्य सिस्टम पर चल सकते हैं

जब समय निर्दिष्ट किया जाता है तो वर्तमान मिनट के लिए निर्धारित सभी कार्य चलाए जाते हैं। अलग-अलग समय का उपयोग करना एक अच्छा विचार है।

यदि आपके पास ऐसी नौकरियां हैं जो पारस्परिक रूप से अनन्य हैं, तो यह निर्धारित करने के लिए कि क्या दूसरी नौकरी चल रही है, लॉक फ़ाइल का उपयोग करना आम है।


@dailyसे थोड़ा अलग है /etc/cron.daily। पूर्व एक crontab में उपयोग के लिए एक वैकल्पिक वाक्यविन्यास है। इसके अलावा पर एक नजर है run-parts। मेरा सिस्टम run-partsप्रोग्राम चलाने के लिए उपयोग करता है /etc/cron.dailyrun-parts(8)मैनपेज के अनुसार , "फाइलें उनके नामों के शाब्दिक क्रम में चलती हैं ..."।
एडम मोनसेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.