@Reboot के बाद Crontab job start +1 min


42

+1 में प्रत्येक रिबूट पर निष्पादित स्क्रिप्ट की आवश्यकता है। मैंने एक रिकॉर्ड रखा @rebootलेकिन यह मेरी स्क्रिप्ट के लिए बहुत जल्दी है। रिबूट के कुछ समय बाद इसे कैसे निष्पादित किया जाए?


2
यह बहुत जल्दी क्यों है ? शायद एक init स्क्रिप्ट अधिक उपयुक्त होगी (निर्भरता के बारे में, उदाहरण के लिए इस स्क्रिप्ट को पहले सेट करने के लिए नेटवर्किंग की आवश्यकता है )?
sr_

मेरी स्क्रिप्ट को अन्य सभी के बाद निष्पादित करने की आवश्यकता है, कम शब्दों में अंतिम
यूरीजा 73

चूँकि आपकी नौकरी को हर चीज के बाद क्रियान्वित करने की आवश्यकता होती है और चूंकि हर चीज की अवधारणा काफी परिवर्तनशील होती है (इसके अलावा एक नया ऑटोस्टार्ट @ रिबूट एप्लिकेशन इतना असामान्य नहीं है), मुझे लगता है कि आरसी स्क्रिप्ट में अपना काम करना आपके ऊपर है जिस तरह से अपने उद्देश्य सर्वर। /Etc/rc.local में निर्दिष्ट कार्यों के तल पर अपना काम करना आमतौर पर आप क्या चाहते हैं, लेकिन आपके सिस्टम के स्टार्टअप कॉन्फ़िगरेशन के आधार पर, यह हर समय सही नहीं हो सकता है। इसलिए, इसका परीक्षण करें और देखें कि क्या यह आपके लिए काम करता है।
मेलबर्सलान

Upstart के लिए एक मामले की तरह लगता है?
nafg

जवाबों:


64

क्या स्क्रिप्ट केवल बूट करने के एक मिनट बाद चलाने का इरादा रखती है, या इसे अन्य समय पर भी इस्तेमाल किया जा सकता है? पूर्व मामले में, आप sleep 60अपनी स्क्रिप्ट की शुरुआत में जोड़ सकते हैं , या बाद के मामले में, इसे crontab फ़ाइल में जोड़ सकते हैं:

@reboot sleep 60 && my_script.sh

जैसा कि sr_ द्वारा बताया गया है, हालांकि, शायद आप इसे गलत तरीके से निपटा रहे हैं, और एक उचित init.d या rc.d स्क्रिप्ट एक अधिक मजबूत समाधान होगा।


1
या देरी को ट्विक करने के लिए कमांड लाइन विकल्प का उपयोग करें (जैसे script -s Xजो sleep Xस्क्रिप्ट के अंदर अनुवाद करेगा )।
पेटरफ

क्या मैं /etc/init.d/ में फ़ाइल टास्करनर के लिए इसे लागू कर सकता हूं?
एंड्रेस एंजेल

@AndresAngel - मुझे क्षमा करें, मुझे नहीं पता। मैं FreeBSD का उपयोग करता हूं taskrunner, जिसके पास नहीं है , न ही, इस मामले के लिए,/etc/init.d
D_Bye

मेरे rhel7 नींद पर काम नहीं करता है, यह हमेशा के लिए सोता है और कभी वापस नहीं आता है।
इंदर आर सिंह

16

यदि आपको रिबूट के बाद कुछ निष्पादित करने की आवश्यकता है जब नेटवर्क उपलब्ध हो जाएगा, उदाहरण के लिए, आप सिस्टमड यूनिट लिख सकते हैं जिसे आवश्यक समय पर निष्पादित किया जाएगा (बेशक यह सिस्टमड के साथ सिस्टम पर ही काम करेगा)।

ऐसा करने के लिए /etc/systemd/system/my_script.serviceनिम्नलिखित सामग्री के साथ फ़ाइल बनाएँ :

[Unit]
Description=My script that requires network
After=network.target

[Service]
Type=oneshot
ExecStart=/full/path/to/my_script.sh

[Install]
WantedBy=multi-user.target

फिर निष्पादित करें:

sudo systemctl daemon-reload
sudo systemctl enable my_script

हो गया!


11

मैं उपयोग करूंगा at। जैसे की:

@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.

... अतिरिक्त उल्लेखित चेतावनी के साथ कि यदि आप वास्तव में क्या चाहते हैं तो अन्य सभी चीजों के बाद इसे चलाना चाहिए, आपको यह जांचना चाहिए कि आपके ओएस का उपयोग करने वाले init को कैसे करना है।

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