रास्पबेरी पाई स्टार्टअप पर स्वचालित रूप से कार्यक्रम शुरू करती है


22

मैंने सेंसर के साथ दो रास्पबेरी पाई (रननिग रास्पियन) से युक्त एक वायरलेस सेंसर नेटवर्क बनाया है और एक बेस स्टेशन रास्पबेरी पाई है जो डेटा एकत्र करता है।

हर बार जब मैं सिस्टम को चलाना चाहता हूं तो मुझे प्रत्येक सेंसर इकाई में लॉग इन करना होगा और दो लूपिंग पायथन प्रोग्राम चलाने होंगे, एक सेंसर डेटा एकत्र करने के लिए और एक बेस स्टेशन पर संचारित करने के लिए।

ये इकाइयां बिना किसी इंटरनेट के उपयोग के अजीब स्थानों पर जा रही हैं, इसलिए इन्हें चलाने के लिए मेरे साथ एक मॉनिटर, कीबोर्ड और माउस ले जाना बिल्कुल आसान नहीं है। क्या कोई तरीका है जो मैं उन्हें स्वचालित रूप से लॉग इन करने, प्रोग्राम 1 चलाने और फिर प्रोग्राम 2 को स्वचालित रूप से स्टार्टअप पर चलाने के लिए सेट कर सकता हूं?

जवाबों:


15

आप उन 2 प्रोग्रामों को rc.local फाइल में जोड़ सकते हैं। यह उन्हें स्टार्टअप पर चलाएगा। अधिक जानकारी http://www.raspberrypi.org/documentation/linux/usage/rc-local.md पर देखी जा सकती है ।


3
एक मुद्दा यह है कि दस्तावेज़ जिसे लोगों को ट्रिप करने लगता है में नहीं: का प्रयोग नहीं करते sudoमें rc.localही। इसे बूट पर रूट विशेषाधिकारों के साथ चलाया जाता है। उपयोग करने के बारे में उस हिस्से पर ध्यान देना सुनिश्चित करें &जब तक कि आपका कार्यक्रम बस जल्दी से कुछ नहीं करता है।
गोल्डीलॉक्स

आप चलाने के लिए अपने कार्यक्रमों चाहते हैं के बाद नेटवर्क है, और /path/to/somescript.sh &करने के लिए rc.local, और स्क्रिप्ट जोड़ने में while ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done;अपने कार्यक्रम शुरू करने से पहले।
Tor Klingberg

+ गोल्डीलॉक्स समस्या यह है कि आप सुडो को पहले से चलाए rc.localबिना लेखन पहुँच प्राप्त नहीं कर सकते हैं । आपकी क्या सलाह है?
रिनविंड

15

Xer0FyT का जवाब शायद PI पर प्रोग्राम शुरू करने का सबसे सरल तरीका है। लेकिन समस्या तब होती है जब प्रोग्राम शुरू होने के बाद किसी भी कारण से क्रैश हो जाता है क्योंकि यह फिर से शुरू नहीं होगा, क्योंकि कोई प्रक्रिया निगरानी नहीं है। मैं व्यक्तिगत रूप से इसके बजाय डेमोंटोसल्स का उपयोग करने की सलाह दूंगा । यह सेटअप करने के लिए बहुत सरल है (और रास्पियन में शामिल है)। मूल रूप से आप एक सेवा निर्देशिका बनाते हैं जिसमें एक runशेल स्क्रिप्ट होती है जो आपका प्रोग्राम शुरू करती है। डेमोंटोल्स तब यह सुनिश्चित करेंगे कि आपका कार्यक्रम शुरू हो गया है और फिर से शुरू हो जाना चाहिए कि यह किसी भी कारण से दुर्घटनाग्रस्त हो जाए।

डेमोंटोल्स को स्थापित करना बहुत सरल है। केवल

apt-get install daemontools daemontools-run

फिर एक निष्पादन योग्य रन स्क्रिप्ट युक्त अपनी सेवा निर्देशिका बनाएं:

# create the service directory
mkdir -p /service/my-service

# create the run script
cat > /service/my-service/run <<EOF
#!/bin/sh
echo "I'm an example service executed by daemontools"
sleep 1
# Replace those 2 lines with a real call to your program like this:
# exec /my/program.py --arguments
EOF

# make it executable
chmod 755 /service/my-service/run

इस पर एक नज़र डालें /service/my-service/runऔर इसे संपादित करें, इसलिए यह चलने के बजाय अपना कार्यक्रम शुरू करता है echo। एक बार जब यह हो जाता है, /etc/serviceतो उस निर्देशिका को स्वचालित रूप से (फिर से) शुरू करने वाले सिम्क्लिन इसे शुरू करते हैं:

cd /etc/service
ln -s /service/my-service .

लगभग 5 सेकंड के बाद आपका प्रोग्राम चलना चाहिए। आप इसका उपयोग शुरू / बंद कर सकते हैं

# stop it
$ svc -d /service/my-service

# start it
$ svc -u /service/my-service

(उदाहरण के लिए) syslog में लॉग इन करना भी संभव है। तो आपके प्रोग्राम का आउटपुट खो नहीं जाता है। मैंने इस बारे में एक और पूरी ब्लॉग पोस्ट लिखी है: https://info-beamer.com/blog/running-info-beamer-in-production


9
  1. रास्पियन में मेनू, वरीयताएँ, मुख्य मेनू संपादक पर क्लिक करें
  2. प्राथमिकताएँ क्लिक करें और LXSession के लिए डिफ़ॉल्ट अनुप्रयोगों की जाँच करें
  3. ठीक क्लिक करें और मुख्य मेनू संपादक बंद करें
  4. अब Menu और Under Preferences पर क्लिक करें और LXSession के लिए डिफ़ॉल्ट एप्लिकेशन पर क्लिक करें
  5. LXSession कॉन्फ़िगरेशन खुलती है
  6. ऑटोस्टार्ट पर क्लिक करें
  7. अपने ऑटो कमांड लाइन में मैनुअल ऑटोस्टार्ट किए गए एप्लिकेशन पेस्ट करें
  8. add पर क्लिक करें
  9. LXSession कॉन्फ़िगरेशन एप्लिकेशन को बंद करें और अपने पाई को रिबूट करें

    आपका जावा ऐप रिबूट के बाद चलना चाहिए


मुझे लगता है कि यहां थोड़ा और विस्तार की आवश्यकता है
डार्थ वाडर

मेरे लिए ठीक काम किया!
jbyrnes 14

धन्यवाद @Palmeta! ऑटोस्टार्ट में मेरा एक कार्यक्रम था लेकिन वास्तव में यह भूल गया कि मैंने इसे कहाँ स्थापित किया था। मैंने हर जगह देखा। आपके द्वारा वर्णित कॉन्फ़िगरेशन टूल के साथ मैं अंत में इसे फिर से खोज सकता हूं और इसे निष्क्रिय कर सकता हूं: डी! 100 अंक
पास्कल लैमर

2

आप शायद पहले से ही cronपीआई के कुछ हाउसकीपिंग कार्यों के लिए स्थापित कर चुके हैं ।

खोजें man 5 crontabके लिए @reboot


0

आप शोध करना चाह सकते हैं service। आप एक init स्क्रिप्ट बना सकते हैं जो सिस्टम के init का एक हिस्सा है, और इसे एक उपयुक्त रनलेवल पर रखें।

भागो man service

यहाँ init स्क्रिप्ट बनाने के लिए एक गाइड है: http://www.novell.com/coolsolutions/feature/15380.html


2
अफसोस की बात है कि systemdरास्पियन सहित अधिकांश लिनक्स वितरणों की ओर लेमिंग-जैसी भीड़ के साथ , इस उत्तर को अपडेट करने की आवश्यकता होगी यदि ओपी अपने सिस्टम को अपडेट करता है ताकि sysV से अधिक हो सके init... 8- (
SlySven

0

बस इस लिंक का पालन करें ।

मान लें कि आपके पास डेस्कटॉप पर test.txt है, तो एक उदाहरण हो सकता है:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
@leafpad /home/pi/Desktop/test.txt

और यह काम करता है!

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