मेरे पास एक स्क्रिप्ट थी जो नेटवर्कर के उपयोग के बिना स्वचालित रूप से मेरी वाईफाई को सक्षम करती है, लेकिन मुझे नहीं पता कि सिस्टम को बूट करते समय स्क्रिप्ट को रूट के रूप में कैसे चलाना है। मैं बूट के दौरान स्क्रिप्ट को स्वचालित रूप से कैसे चलाऊं?
मेरे पास एक स्क्रिप्ट थी जो नेटवर्कर के उपयोग के बिना स्वचालित रूप से मेरी वाईफाई को सक्षम करती है, लेकिन मुझे नहीं पता कि सिस्टम को बूट करते समय स्क्रिप्ट को रूट के रूप में कैसे चलाना है। मैं बूट के दौरान स्क्रिप्ट को स्वचालित रूप से कैसे चलाऊं?
जवाबों:
उस स्क्रिप्ट को रखें जिसे आप /etc/init.d निर्देशिका में चलाना चाहते हैं और स्क्रिप्ट को निष्पादन योग्य बनाते हैं।
chmod 755 myscript
एक बार जब आप रन लेवल डायरेक्टरी में एक प्रतीकात्मक लिंक बना लेते हैं, जिसका आप उपयोग करना चाहते हैं, उदाहरण के लिए यदि आप ग्राफिकल रनलेवल 2 में एक प्रोग्राम चलाना चाहते हैं, तो उबंटू के लिए डिफॉल्ट रनवेल, आप इसे /etc/rc2.d
डायरेक्टरी में रखेंगे । आप बस इसे निर्देशिका में नहीं रख सकते, आपको संकेत देना होगा कि यह स्टार्टअप को "S" के साथ इंगित करके कैसे चलेगा और निष्पादन आदेश महत्वपूर्ण है। यह सब कुछ है कि यह एक उच्च संख्या देकर निर्देशिका में है के बाद रखें।
यदि अंतिम स्क्रिप्ट को चलाया जाना है rc.local
और इसका नाम है S99rc.local
तो आपको अपनी स्क्रिप्ट को जोड़ने की आवश्यकता है S99myscript
।
ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript
प्रत्येक पिछड़े संगत /etc/rc*.d
निर्देशिका में निर्देशिका के प्रतीकात्मक लिंक होते हैं /etc/init.d/
।
/etc/rc2.d
, बजाय rc3.d
के रूप में उदाहरण में संकेत दिया। ऐसा लगता rc2.d
है कि केवल चित्रमय रन स्तर नहीं है।
cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.d
आपको ले जाएगा कि कौन सी /etc/rc?.d
निर्देशिका आपके डिफ़ॉल्ट रनवे से मेल खाती है।
rc.local
और इसे नाम दिया गया है S99rc.local
तो आपको अपनी स्क्रिप्ट जोड़ने की आवश्यकता है S99myscript
।" क्या आपका मतलब है: "यदि अंतिम स्क्रिप्ट को चलाया जाना है myscript
और इसका नाम है S99myscript
तो आपको अपनी स्क्रिप्ट जोड़ने की आवश्यकता है S99myscript
।" ???
में कमांड शामिल करें /etc/rc.local
। जब भी यूजर के रनवे में बदलाव होगा, इसे चलाया जाएगा।
नोट: आपको /etc/rc.local में अंतिम पंक्ति से पहले कमांड डालना होगा जिसमें शामिल हैं: "बाहर निकलें 0"।
/etc/rc.local
जिसमें शामिल हैं: exit 0
/etc/rc.local
ubuntu 15.10 में टिप्पणी है कि "इस स्क्रिप्ट को प्रत्येक मल्टीसियर रनलेवल के अंत में निष्पादित किया जाता है।" तो स्क्रिप्ट को बूट के दौरान कई बार चलाया जा सकता है, है ना?
crontab
रिबूट के बाद अपनी स्क्रिप्ट को चलाने के लिए एक विकल्प का उपयोग करें ,
आप क्रॉन@reboot
में कोड जोड़कर कर सकते हैं
जड़ उपयोगकर्ता द्वारा क्रॉन्स्ट खोलें:
$ sudo crontab -e
तल पर अगला रिकॉर्ड जोड़ें:
@reboot yourScriptPath
वही करेगा जो आप चाहते हैं।
crontab -e
, जिसे सुपरसुसर विशेषाधिकारों की आवश्यकता नहीं है? मुझे आश्चर्य है, अगर यह स्क्रिप्ट चला सकता है जिसे रूट के रूप में चलाने की आवश्यकता है।
sudo crontab -e
स्टार्टअप के दौरान स्क्रिप्ट को रूट के रूप में चलाने के लिए आपको कमांड चलाते हुए लाइन को जोड़ना होगा ।
/var/run/crond.reboot
, यदि नहीं, तो कार्य निष्पादित नहीं करेगा
इसने मेरे लिए Ubuntu 17.04 पर काम किया:
disable_cdrom
आपके लिए सुविधाजनक की तरह टूर स्क्रिप्ट फ़ाइल बनाएँ । मेरे मामले में home/yterle/disable_cdrom
। मेरे मामले में:
#!/bin/sh
eject /dev/sr0 -i 1
इसे अमल में लाएं chmod 775 disable_cdrom
/etc/systemd/system
और वहां एक service
फ़ाइल बनाएं । उदाहरण के लिएsudo gedit /etc/systemd/system/disable_cdrom.service
मेरा disable_cdrom.service
ऐसा दिखता है:
[Unit]
Description=Disable cdrom
[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom
[Install]
WantedBy=multi-user.target
जहां ExecStart
आपकी स्क्रिप्ट को चलाने के लिए अंक हैं/bin/sh
तब systemctl enable disable_cdrom.service
systemd सेवा को सक्षम करने के लिए चलाएँ
systemctl enable disable_cdrom.service
/etc/init.d/
निष्पादन योग्य अनुमति के साथ अपनी स्क्रिप्ट फ़ाइल शामिल करें फिर अलग-अलग रन स्तर सेट करें
$ update-rc.d script-name default
यह आपकी स्क्रिप्ट को बूट स्टार्टअप पर डाल देगा।
update-rc.d script-name enable
?
स्क्रिप्ट को जोड़ने में सावधानी बरतने के कारण rc.local
- मैं इसके कारण स्प्लैश स्क्रीन में फंस गया था। दबाने Alt+ से F1पता चलता है कि स्प्लैश स्क्रीन के पीछे क्या चल रहा था (स्क्रिप्ट rc.local
चल रही थी)।
मैं इससे बाहर नहीं निकल सका।
कुछ भी काम नहीं करता है।
मुझे एक USB उबंटू छवि से बूट करना था, ढूंढना rc.local
, अपने आप को फ़ाइल और इसे हटाने की अनुमति देना। मुझे लगता है कि आपको सामान नहीं करना चाहिए यदि आप नहीं जानते कि आप क्या कर रहे हैं।
autostart
मैनिफ़ेस्ट में या*.service
कई स्थानों परinit.d
या साथ ही फ़ाइलों में कॉन्फ़िगर किए गए हैंcrontab
। इसे देखें: unix.stackexchange.com/a/525845/43233