+1 में प्रत्येक रिबूट पर निष्पादित स्क्रिप्ट की आवश्यकता है। मैंने एक रिकॉर्ड रखा @reboot
लेकिन यह मेरी स्क्रिप्ट के लिए बहुत जल्दी है। रिबूट के कुछ समय बाद इसे कैसे निष्पादित किया जाए?
+1 में प्रत्येक रिबूट पर निष्पादित स्क्रिप्ट की आवश्यकता है। मैंने एक रिकॉर्ड रखा @reboot
लेकिन यह मेरी स्क्रिप्ट के लिए बहुत जल्दी है। रिबूट के कुछ समय बाद इसे कैसे निष्पादित किया जाए?
जवाबों:
क्या स्क्रिप्ट केवल बूट करने के एक मिनट बाद चलाने का इरादा रखती है, या इसे अन्य समय पर भी इस्तेमाल किया जा सकता है? पूर्व मामले में, आप sleep 60
अपनी स्क्रिप्ट की शुरुआत में जोड़ सकते हैं , या बाद के मामले में, इसे crontab फ़ाइल में जोड़ सकते हैं:
@reboot sleep 60 && my_script.sh
जैसा कि sr_ द्वारा बताया गया है, हालांकि, शायद आप इसे गलत तरीके से निपटा रहे हैं, और एक उचित init.d या rc.d स्क्रिप्ट एक अधिक मजबूत समाधान होगा।
script -s X
जो sleep X
स्क्रिप्ट के अंदर अनुवाद करेगा )।
taskrunner
, जिसके पास नहीं है , न ही, इस मामले के लिए,/etc/init.d
यदि आपको रिबूट के बाद कुछ निष्पादित करने की आवश्यकता है जब नेटवर्क उपलब्ध हो जाएगा, उदाहरण के लिए, आप सिस्टमड यूनिट लिख सकते हैं जिसे आवश्यक समय पर निष्पादित किया जाएगा (बेशक यह सिस्टमड के साथ सिस्टम पर ही काम करेगा)।
ऐसा करने के लिए /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
हो गया!
मैं उपयोग करूंगा 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 को कैसे करना है।