Crontab पर स्टार्टअप पर कमांड चलाना


24

मैं रिबूट करने के बाद हमारे लिनक्स पर एक कमांड चलाना चाहता था, मैंने देखा कि क्रॉस्टैब का उपयोग करके इसे किया जा सकता है। मैं इस कमांड को चलाना चाहता था

sudo ifdown eth0 && sudo ifup -v eth0

Crontab पर मैं बस कर सकते हैं:

@reboot sudo ifdown eth0 && sudo ifup -v eth0

या क्या मुझे उस स्क्रिप्ट में संग्रहीत करने की आवश्यकता है?

धन्यवाद


7
Crontab eth0 को पुनः आरंभ करने के लिए एक गलत उपकरण की तरह लगता है। /Etc/rc.local में उस कमांड को (sudo के बिना) क्यों नहीं रखा गया?
mikewhatever 21

इसके लिए आपको क्या करने की आवश्यकता है? इन कार्यों को आम तौर पर बूट प्रक्रिया के दौरान स्वचालित रूप से किया जाता है, और लगभग कभी नहीं स्वचालित बूट प्रक्रियाओं से अलग से चलाने के लिए जरूरत है ...
थॉमस वार्ड

1
@ mikewhatever मैं इस समय नहीं अपितु केवल सुझाव देने के लिए धन्यवाद देना चाहता हूँ।
लोटी

जवाबों:


34

इससे पहले कि यहां कुछ नोट काम करेंगे:

  1. sudoएक क्रॉन नौकरी में उपयोग न करें । इसके rootबजाय, अपने स्वयं के बजाय क्रॉस्टैब को संपादित करें , जैसे sudo crontab -eऔर फिर बिना कमांड दर्ज करें sudo
  2. जैसा कि @mikewhatever ने उल्लेख किया है, यह एक अजीब उपयोग है cron, और संभवतः लाइन /etc/rc.localसे पहले बेहतर रखा जाएगा exit 0
  3. यदि आप हमें बताते हैं कि आप वास्तव में क्या देख रहे हैं, तो हम आपको लॉग या कॉन्फिगर करने के विकल्प (स्टार्टअप पर अपनी नेटवर्क सेवाओं को फिर से शुरू करना, थोड़ा हैकिश महसूस करना) के लिए निर्देशित कर सकते हैं।
  4. अधिकांश प्रणालियों पर @rebootभी एक कठिन शटडाउन या दुर्घटना के बाद चलना चाहिए, लेकिन अलग-अलग क्रोन कार्यान्वयन हैं इसलिए YMMV। मैंने दोनों को अलग-अलग स्थानों पर टिप्पणियों को देखा है।

EDIT (2016/02/17): निरपेक्ष रास्तों पर गलत प्रतिबंध हटा दिया गया; kudos @muru
EDIT (2016/10/17): जोड़ा गया शटडाउन नोट
EDIT (2017/09/11): संशोधित शटडाउन नोट। वास्तव में उस पर यकीन नहीं है।


ठीक है, मैं स्पष्ट करना चाहता हूं, मुझे सिर्फ etc/rc.localसूडो के बिना पूरी कमांड लिखना चाहिए । तो यह सिर्फ ifdown eth0 && sudo ifup होगा -v eth0 से बाहर निकलें 0
Lottie

cronPATHदिए गए का उपयोग करता है /etc/environment, जिसमें है /sbin
मूरू

मैंने वही किया जो @mikewhatever ने सुझाया और यह काम कर गया। धन्यवाद
लोटी

1
@ साचवा होना चाहिए। कम से कम 12.04 से, /etc/pam.d/cronलोड करता है pam_env, इसलिए /etc/environmentपढ़ना चाहिए और PATHउपयोग में डिफ़ॉल्ट सेट होना चाहिए । 12.04 बाहर आने से ठीक पहले उस जवाब को पोस्ट किया गया था।
मूरू

2
@ TheSwawa क्रोन का रिबूट एक ठंडे बूट पर नहीं चलने वाला बयान गलत है। रिबूट के साथ लाइनें तब चलती हैं जब क्रोन डेमॉन शुरू होता है, अवधि। चाहे वह गर्म बूट हो, कोल्ड बूट हो, या कोई बूट नहीं था और मैंने बस मैन्युअल रूप से क्रोन को बंद कर दिया और इसे फिर से शुरू किया। क्रोन डेमॉन को पता नहीं है या परवाह नहीं है कि इसे फिर से क्यों शुरू किया जा रहा है, यह बस जब भी करता है तो रिबूट लाइनें चलाएगा।
कर्ट फिजर

6

आप इसके लिए कॉन्टैब का उपयोग कर सकते हैं, लेकिन यदि आप उपयोग करते हैं sudo, तो आपको ऐसा करने के लिए एक NOPASSWDनियम की आवश्यकता होगी sudoers। ( सूडो कमांड का उपयोग करके क्रोन जॉब कैसे चलाएं देखें ।)

लाइन /etc/rc.localसे पहले इन कमांड को एडिट करना और जोड़ना सरल होगा exit 0

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