विशिष्ट क्रोन को आसानी से अक्षम करना। {प्रति घंटा, दैनिक, साप्ताहिक} स्क्रिप्ट


25

विभिन्न प्रणालियों पर जिन्हें मैं प्रशासित करता हूं, क्रोन स्क्रिप्ट हैं जो आमतौर पर उपयोग किए गए /etc/cron.{hourly,daily,weekly}लेआउट के माध्यम से चलती हैं । मैं जानना चाहता हूं कि क्या कोई सामान्य 'इस स्क्रिप्ट को अक्षम' कार्यक्षमता है।

जाहिर है, बस किसी दी गई डायरेक्टरी में से कुछ डिलीट करना उसे डिसेबल कर देगा, लेकिन मैं एक और स्थायी सॉल्यूशन की तलाश में हूं। हटाना मेरे घरेलू मशीन पर /etc/cron.daily/slocateरात को निष्क्रिय करने के लिए काम करेगा updatedb(जहां मैं कभी उपयोग नहीं करता slocate), लेकिन अगली बार जब मैं धीमे पैकेज को अपग्रेड करता हूं, मुझे पूरा यकीन है कि यह फिर से दिखाई देगा।

जिन दो डिस्ट्रिब्यूशन में मुझे सबसे ज्यादा दिलचस्पी है, वे हैं Gentoo और OpenSUSE, लेकिन मुझे उम्मीद है कि एक व्यापक रूप से लागू तंत्र है। दोनों डिस्ट्रोस के रूप में मैंने उन्हें विक्सी-क्रोन का उपयोग किया है (यह सुनिश्चित नहीं है कि यह मायने रखता है)।

जवाबों:


45

आपको chmod -x scriptnameएक स्क्रिप्ट को अक्षम करने में सक्षम होना चाहिए लेकिन फ़ाइल को जगह में छोड़ देना चाहिए।


5
पैकेज प्रबंधन प्रणाली द्वारा यह पूर्ववत हो भी सकता है और नहीं भी। आप ऐसा करने के chattr +i scriptnameबाद इसे और अधिक मजबूत बना सकते हैं chmod
mc0e

@ mc0e मुझे अपरिवर्तनीय फ़ाइलों के बारे में सिखाने के लिए धन्यवाद, लेकिन जैसा कि किसी ने एक बार कहा था , वे डरावने हैं । अगर मैं कभी भूल गया कि मैंने क्या किया है, तो यह कुछ बहुत ही निराशाजनक मुसीबत पैदा कर सकता है।
जोनाथन वाई।

2
@JonathanY: यह वही lsattrहै जो डरावने को दूर करने के लिए है (यह एक फ़ाइल के atteibutes को सूचीबद्ध करता है)।
अगली सूचना तक रोक दिया गया।

1
DW सुनिश्चित है, लेकिन फ़ाइल विशेषताओं को देखने के बारे में जानना जब कुछ अनावश्यक रूप से गलत हो जाता है (ठीक उसी तरह जैसे कि मैं जिस धागे से जुड़ा हूं) यहां असली किक है।
जोनाथन वाई।

@JonathanY। तो अब आप जानते हैं। :-) किसी भी मामले में, मुझे लगता है कि लिंक किए गए धागे में 'डरावना' बिट एक पैडमैन बग को संदर्भित करता है, न कि चैटर को
mc0e

9

रन-पार्ट्स उन नौकरियों को निष्पादित नहीं करता है जिनके नाम में डॉट है, इसलिए

mv /etc/cron.d/job /etc/cron.d/job.disabled

चाल चलेगा।


1
दुर्भाग्य से, कार्यक्रम को अपग्रेड करते समय यही समस्या होगी - यह देखने के लिए जांच करेगा कि क्या क्रोन नौकरी मौजूद है, और चूंकि यह अपने मूल नाम से मौजूद नहीं है, इसलिए इसे फिर से बनाया जाएगा।
जेनी डी का कहना है कि

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

डेबियन में, फ़ाइल डायवर्जन की धारणा है - यानी आप पैकेज प्रबंधक द्वारा प्रबंधित किए जाने के दौरान फ़ाइल को प्रभावी ढंग से नाम बदल सकते हैं। शायद एक समान तंत्र Gentoo और / या SUSE में मौजूद है?
बास

9

आमतौर पर जैसे लाइन के cron.dailyमाध्यम /etc/crontabसे आह्वान किया जाता है

run-parts --report /etc/cron.daily

man run-parts आपको विकल्प देता है।

run-parts --test /etc/cron.daily दिखाता है कि कौन से काम बिना चलाए किए जाते हैं।

मैं एक सबडिर 'डिसेबल्ड' बनाना पसंद करता हूं और वहां अपनी नौकरियां बढ़ाता हूं।

किसी भी स्थिति में अगर आप किसी पैकेज को अपडेट करते हैं तो यह संभावना है कि नौकरी फिर से हो जाए या हटाए गए 'x' बिट्स बहाल हो जाएं


1

यदि आप कभी भी इसका उपयोग नहीं करते हैं तो आप धीमे पैकेज को हटा सकते हैं।


यह सिर्फ एक उदाहरण था, लेकिन फिर भी अच्छी सलाह, धन्यवाद। (मुझे लगा कि कुछ धीमे पर निर्भर हो सकता है, लेकिन कुछ भी प्रतीत नहीं होता है।)
बेन्ज़ी

इसके बजाय स्लोकेट निकालें, और एमएलओकेट स्थापित करें। काफी बेहतर।
mc0e

1

यदि आप cfengine ( https://cfengine.com/ ) का उपयोग करते हैं, तो आप इसे अक्षम कर सकते हैं। आप बस मेजबानों के एक समूह के लिए एक वादा फ़ाइल लिखते हैं और यह अगले सीफगेंट रन में खुद को लागू करेगा। कठपुतली या रसोइये के साथ ऐसा करना या जो कुछ भी काफी सरल होना चाहिए।


दिलचस्प। मैंने केवल विन्यास प्रबंधन उपकरणों का बहुत ही सहजता से सामना किया है। मैं एक सामान्य "मुझे कुछ मनमाना यूनिक्स जैसी प्रणाली" समाधान की तलाश थी।
बेंजी

1

/Etc/cron.daily et। अल। स्क्रिप्ट रन-पार्ट्स नामक स्क्रिप्ट द्वारा चलाए जाते हैं। वह स्क्रिप्ट बदलती है। उदाहरण के लिए - उपर्युक्त स्विच ऊपर बताई गई मशीन पर नहीं है जो मैं इस तुरंत उपयोग कर रहा हूं।

रन-पार्ट्स एक बैश स्क्रिप्ट है। यह निर्देशिका में सभी लिपियों को चलाने के लिए एक आम तौर पर उपयोगी उपकरण है जो इसे एक तर्क के रूप में दिया गया है। यह आमतौर पर / usr / bin / run-parts में पाया जाता है।

यह तय करने के लिए तर्क की एक उलझन है कि क्या चलाना है। यह कोड आपके प्रश्न का उत्तर रखता है, लेकिन यह भिन्न भी है। इसलिए आपको सुरक्षित रहने के लिए कोड को पढ़ना होगा।

जिस संस्करण में मैं देख रहा हूं उसमें तर्क है कि जब निर्देशिका <foo> पर काम कर रहा है, तो <foo> /jobs.deny के लिए जाँच करता है। यदि वह मौजूद है तो यह उस फ़ाइल में उल्लिखित किसी भी स्क्रिप्ट को चलाने के लिए, अकेले लाइन में आता है। यह मानकर कि आपके पास यह कार्यक्षमता है यह बहुत बढ़िया है क्योंकि यह तब काम करता रहेगा जब स्थापित किया गया पैकेज स्थापित या अपग्रेड किया गया हो।


0

यदि आरएचईएल और व्युत्पन्न (जो crontabsपैकेज प्रदान करता है ) के साथ काम कर रहा है, तो आप jobs.denyफ़ाइल में अपना नाम डालकर स्पष्ट रूप से नौकरी अक्षम कर सकते हैं ।

से crontabs / रन भागों आदमी पेज :

फ़ाइलों के निष्पादन की अनुमति दी जा सकती है या फ़ाइल jobs.allow या jobs.deny को बनाने से इनकार किया जा सकता है जो अन्य अनुमति / इनकार करने वाली फ़ाइलों के समान काम करता है। फ़ाइल को निर्दिष्ट निर्देशिका में बनाया जाना चाहिए।

उदाहरण /etc/cron.daily/jobs.deny में उदाहरण के लिए हो सकता है 0logwatch जो इस स्क्रिप्ट के निष्पादन को मना करता है।


-1

यदि आप उपयोगकर्ता-कॉन्टैब्स या तो नहीं चाहते हैं, तो अपनी सेवा-सूची में क्रोन को अक्षम करें।

डेबियन और डेबियन पर आधारित संस्करणों में यह केवल उचित /etc/rcX.d (रनलेवल एक्स के लिए) से सिमलिंक को हटाने का मामला है।

मुझे नहीं पता कि आप SUSE या Gentoo में सेवाओं को कैसे संभालते हैं।


4
यह सिर्फ एक बुरा विचार है। क्रोन को पूरी तरह से निष्क्रिय करना उपयोगी रखरखाव कार्यों जैसे कि लॉगोटेट, अपडेटब, संभवतः अप्राप्य उन्नयन और मानक बैक-अप को अक्षम कर देगा।
तोबू

अपडेटब बिल्कुल ठीक वह कार्य है जिसे मैं अक्षम करने का प्रयास कर रहा हूं (धीमे के लिए डीबी अपडेट करता है)। बहरहाल, हां, सामान्य तौर पर बुरी सलाह।
बेंजी जू

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