2015-03-04 11 views
6

का उपयोग करके स्टार्टअप पर एक स्क्रिप्ट निष्पादित करना मेरे पास a.out है जो मैं BeagleBone बूट होने पर चलाना चाहता हूं। यह वास्तव में एक सॉकेट सर्वर है जिसे मैं बीगलबोन शक्तियों के साथ ही शुरू करना चाहता हूं। मैंने इसे /etc/init.d में डालने की कोशिश की, लेकिन इससे मदद नहीं मिली। मैंने इस निष्पादन योग्य को चलाने के लिए एक शेल स्क्रिप्ट लिखी लेकिन यहां तक ​​कि इससे मदद नहीं मिली।बीगलबोन ब्लैक

जैसे ही यह बूट हो जाता है, स्क्रिप्ट चलाने के लिए मैं क्या कर सकता हूं?

+0

स्टैक ओवरफ़्लो में आपका स्वागत है! मैंने आपके प्रश्न का पुन: वर्णन किया है कि इसे चुनना आसान है और अगर कोई इससे परिचित नहीं है तो मैंने बोर्ड से लिंक किया है। –

+0

आप अपने बीबीबी पर वास्तव में डेबियन वितरण (और संस्करण) का उपयोग कर रहे हैं? मैं पूछ रहा हूं, क्योंकि आपको पहले पता लगाने की क्या ज़रूरत है, यह है कि [init system] (http://en.wikipedia.org/wiki/Init) आपके वितरण के लिए उपयोग में है। जहां तक ​​मुझे याद है, बीबीबी के कुछ संस्करण [systemd] (http://en.wikipedia.org/wiki/Systemd) के साथ आता है। यदि यह आपका मामला है - आपको यह समझने की आवश्यकता है कि systemd के लिए init स्क्रिप्ट कैसे बनाएं, या इसे sysv-init के साथ प्रतिस्थापित करें।साथ ही, [यह प्रश्न] देखें (http://stackoverflow.com/questions/28141116/debian-etc-init-d-script-not-running)। –

+0

मुझे एक समाधान मिला, मैंने पावर-अप पर अपनी a.out फ़ाइल चलाने के लिए/lib/systemd में एक सेवा लिखी, यह ठीक काम करता है। वैसे भी, मदद सैम के लिए धन्यवाद –

उत्तर

8

मुझे यह पता लगाने में काफी समय लगा, लेकिन बहुत सारे शोध के साथ, मुझे अंत में मिला कि मैं जो खोज रहा था।

  1. आवश्यक कोड संकलित करें।

  2. एक bash स्क्रिप्ट बूट पर कोड का शुभारंभ करेंगे/स्टार्टअप

    cd /usr/bin/ 
    

    प्रकार nano scriptname.sh

    #!/bin/bash 
    /home/root/name_of_compiled_code 
    

    सहेजें बनाएँ और अनुदान पर अमल अनुमति

    chmod u+x /usr/bin/scriptname.sh 
    
  3. सेवा बनाएं

    nano /lib/systemd/scriptname.service 
    
  4. उपरोक्त फ़ाइल को नेटवर्क जैसी विभिन्न कार्यक्षमताओं को आमंत्रित करने के लिए आवश्यकतानुसार संपादित करें। इन्हें केवल तभी सक्षम करें जब कोड को उस विशेष सेवा की आवश्यकता हो। बूट समय कम करने के लिए अवांछित लोगों को अक्षम करें।

    [Unit] 
    Description=description of code 
    After=syslog.target network.target 
    [Service] 
    Type=simple 
    ExecStart=/usr/bin/scriptname.sh 
    [Install] 
    WantedBy=multi-user.target 
    
  5. डिवाइस को सेवा के स्थान को जानने के लिए एक प्रतीकात्मक लिंक बनाएं।

    cd /etc/systemd/system/ 
    ln /lib/systemd/scriptname.service scriptname.service 
    
  6. मेक systemd, विन्यास फाइल को फिर से लोड सेवा तुरंत शुरू और कमांड लाइन में निर्दिष्ट इकाई फ़ाइलों सक्षम (यदि सेवा ठीक से कार्य कर रहा है देखने के लिए मदद करता है)। के रूप में इरादा है, तो इसे चलाता

    systemctl daemon-reload 
    systemctl start scriptname.service 
    systemctl enable scriptname.service 
    
  7. पुनः प्रारंभ बीबीबी तुरंत देखने के लिए।

    reboot 
    

(सभी क्रेडिट http://mybeagleboneblackfindings.blogspot.com/2013/10/running-script-on-beaglebone-black-boot.html को जाता है)

0

मैं एक सेवा बनाने के लिए 7 चरणों का पालन किया है, लेकिन यह मेरे लिए काम नहीं करता है, तो मैं डाल मेरी shellscript मेरी कार्यक्रम चलाने के लिए आदेश, /etc/rc.local में और यह काम किया।

#!/bin/sh -e 
# 
# rc.local 
# 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error. 
# 
# In order to enable or disable this script just change the execution 
# bits. 
# 
# By default this script does nothing. 

cd /home/my_program_directory 
/home/my_program_directory/my_executable 

exit 0 
संबंधित मुद्दे