स्टार्टअप पर चलाओ स्क्रिप्ट


20

मुझे पता है कि यह सवाल पहले भी पूछा जा चुका है, लेकिन मुझे अपनी समस्या का हल नहीं मिल रहा है, मैं सिर्फ स्टार्टअप पर चलने के लिए अपनी स्क्रिप्ट नहीं पा सकता हूं। यहाँ मेरी स्क्रिप्ट है:

#!/bin/bash
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -m state --state NEW -p tcp --sport 22 -j ACCEPT

मैंने इसे /etc/init.dनिर्देशिका में रखा

सुनिश्चित करें कि इसका उपयोग करके निष्पादन योग्य था chmod 755 /etc/init.d/iptables.sh

और हो गया touch /etc/rc3.d/S01iptables.sh

लेकिन कुछ भी नहीं :( ... कोई सुझाव?

[नवम्बर २०१ accepted] यहाँ स्वीकार किए गए उत्तर को अप्रचलित माना जाना चाहिए, कृपया /raspberrypi//a/75057/5538 देखें

जवाबों:


13

[कृपया इस उत्तर के अप्रचलन के संबंध में प्रश्न में नोट देखें।]

यह सुनिश्चित करने के लिए कि आपकी स्क्रिप्ट बूट अनुक्रम में जोड़ी गई है, इस कमांड का उपयोग करें:

sudo update-rc.d /etc/init.d/nameofscript.sh defaults

ध्यान दें कि आप chmod के साथ + x विकल्प का उपयोग करके स्क्रिप्ट को निष्पादन योग्य बना सकते हैं:

chmod +x /etc/init.d/nameofscript.sh

1
हाँ update-rc.dकमांड ने काम किया: डी ... मैंने इसे पहले इस्तेमाल किया, लेकिन यह सिर्फ एक त्रुटि वापस करने के लिए दिखाई दिया, इसलिए मैंने इसे लोल को नजरअंदाज कर दिया ... मदद के लिए धन्यवाद: डी

5
यह sudo update-rc.d nameofscript.sh defaultsकम से कम जेसी से बचने के लिए होगा update-rc.d: error: initscript does not exist: /etc/init.d//etc/init.d/nameofscript.sh
derFunk

क्या इस स्क्रिप्ट को एक उचित समय के भीतर समाप्त करना है? या क्या इसका उपयोग उदाहरण के लिए अनंत के लिए एक वीडियो को लूप करने के लिए किया जा सकता है?
clankill3r

19

स्टार्टअप पर इसे चलाने के लिए आप एक क्रोनजॉब ( ट्यूटोरियल देखें ) भी सेट कर सकते हैं

(sudo) crontab -e

केवल तभी जोड़ें sudoजब आपकी स्क्रिप्ट को सुपरयुसर विशेषाधिकारों की आवश्यकता हो। फिर इसे अपने कॉन्ट्राब में जोड़ें:

@reboot /path/to/script.sh

मैंने एक स्क्रिप्ट लॉन्च करने के लिए इस विधि का उपयोग किया और इसने किसी कारण से सभी ssh एक्सेस को बंद कर दिया। मुझे ड्राइव को एक और लिनक्स डिवाइस पर माउंट करना था और कॉंट्रैब लाइन पर टिप्पणी करनी थी।
फिल हीली

7

आप अपनी स्क्रिप्ट को निष्पादन योग्य कमांड जोड़ सकते हैं, .bashrcजो आपके लॉग इन करने पर हर बार आपकी स्क्रिप्ट चलाएगा

  1. सुनिश्चित करें कि आप piफ़ोल्डर में हैं:

    $ cd ~
    
  2. एक फ़ाइल बनाएँ और फ़ाइल में चलाने के लिए एक स्क्रिप्ट लिखें:

    $ sudo nano superscript
    
  3. सहेजें और बाहर निकलें: Ctrl+ X, Y,Enter

  4. .bashrcकॉन्फ़िगरेशन के लिए खोलें :

    $ sudo nano .bashrc
    
  5. नीचे तक स्क्रॉल करें और लाइन जोड़ें: ./superscript

  6. सहेजें और बाहर निकलें: Ctrl+ X, Y,Enter


यदि आप एक समाधान की तलाश कर रहे हैं जो बूटअप पर कंसोल पर काम करता है , तो इस लिंक पर एक नज़र डालें । बुनियादी ठहरनेवाला:

  1. अपनी स्टार्टअप स्क्रिप्ट के लिए एक फ़ाइल बनाएं और फ़ाइल में अपनी स्क्रिप्ट लिखें:

    $ sudo nano /etc/init.d/superscript
    
  2. सहेजें और बाहर निकलें: Ctrl+ X, Y,Enter

  3. स्क्रिप्ट को निष्पादन योग्य बनाएं:

    $ sudo chmod 755 /etc/init.d/superscript
    
  4. स्टार्टअप पर चलाने के लिए स्क्रिप्ट रजिस्टर करें:

    $ sudo update-rc.d superscript defaults
    

यदि आप LXDE वातावरण में बूट होने पर स्क्रिप्ट चलाना चाहते हैं , तो आप इस रास्पबेरी पाई फोरम पोस्ट पर एक नज़र डाल सकते हैं :

  1. पर जाए ~/.config/lxsession/LXDE-pi

  2. autostartउस फ़ोल्डर में फ़ाइल खोलें :

    $ sudo nano autostart
    
  3. @bash /path/to/scriptname &एक नई पंक्ति में जोड़ें । यदि आप एक अजगर स्क्रिप्ट की तरह कुछ चलाना चाहते हैं, तो @python mypython.pyएक नई लाइन पर कुछ डालें । स्क्रिप्ट फ़ाइल चलाना होगा @./superscript, लेकिन किसी कारण से स्क्रिप्ट अनंत लूप में चलती है (शायद यह बंद हो जाएगा)।

  4. सहेजें और बाहर निकलें: Ctrl+ X, Y,Enter

  5. LXDE वातावरण में अपने रास्पबेरी पाई को पुनरारंभ करें।

स्टार्ट-अप पर एक्सिक्यूट स्क्रिप्ट से लिया गया


1

मैं आमतौर पर स्क्रिप्ट को निष्पादित करने के लिए लाइन जोड़ता हूं /etc/rc.local, उदाहरण के लिए /path/to/my/script.sh &, अंतिम पंक्ति से पहले exit 0। यदि स्क्रिप्ट वापस नहीं आती है, तो मैंने स्क्रिप्ट को भेजने के लिए "और" जोड़ा, अन्यथा अगले आदेशों को निष्पादित नहीं किया जाएगा।

तो आपके मामले में मैं बस दो लाइनें जोड़ूंगा

iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -m state --state NEW -p tcp --sport 22 -j ACCEPT

/etc/rc.localपहले के अंत में exit 0

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