রাস্পবেরি পাই স্টার্টআপে স্বয়ংক্রিয়ভাবে প্রোগ্রাম শুরু করে


22

আমি দুটি রাস্পবেরি পাই (রনিনিগ রাস্পবিয়ান) নিয়ে সেন্সর এবং একটি বেস স্টেশন রাস্পবেরি পাই সমন্বয়ে একটি ওয়্যারলেস সেন্সর নেটওয়ার্ক তৈরি করেছি যা ডেটা সংগ্রহ করে।

প্রতিবার আমি সিস্টেমটি চালাতে চাই আমাকে প্রতিটি সেন্সর ইউনিটে লগইন করতে হবে এবং দুটি লুপিং পাইথন প্রোগ্রাম চালাতে হবে, একটি সেন্সর ডেটা সংগ্রহের জন্য এবং একটি বেস স্টেশনটিতে প্রেরণের জন্য।

এই ইউনিটগুলি কোনও ইন্টারনেট অ্যাক্সেসবিহীন অদ্ভুত স্থানে চলেছে তাই চালানোর জন্য আমার সাথে একটি মনিটর, কীবোর্ড এবং মাউস গ্রহণ করা ঠিক সহজ নয়। আমি কীভাবে সেগুলিকে স্বয়ংক্রিয়ভাবে লগ ইন করতে, প্রোগ্রাম 1 চালাতে এবং তারপরে প্রোগ্রাম 2 স্বয়ংক্রিয়ভাবে চালু করার জন্য সেট করতে পারি?

উত্তর:


15

আপনি সেই দুটি প্রোগ্রাম আরসি.লোকাল ফাইলটিতে যুক্ত করতে পারেন। এটি তাদের শুরুতে চালাবে। আরও তথ্য http://www.raspberrypi.org/docamentation/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;আপনার প্রোগ্রাম আরম্ভ করার পূর্বে।
টোর ক্লিংবার্গ

+ সোনারলকস সমস্যা হ'ল আপনি rc.localসুডো আগে না চালিয়ে লেখার অ্যাক্সেস অর্জন করতে পারবেন না । আপনি কি পরামর্শ দিচ্ছেন?
রিন্সউইন্ড

15

Xer0FyT এর উত্তর সম্ভবত পিআই এ স্বয়ংক্রিয়ভাবে কোনও প্রোগ্রাম শুরু করার সহজতম উপায়। শুরু হওয়া প্রোগ্রামটি যে কোনও কারণে ক্রাশ হয়ে গেলে সমস্যাগুলি দেখা দেয় কারণ এটি পুনরায় আরম্ভ হবে না, যেহেতু কোনও প্রক্রিয়া পর্যবেক্ষণ নেই। পরিবর্তে আমি ব্যক্তিগতভাবে ডিমনটোলগুলি ব্যবহার করার পরামর্শ দেব । এটি সেটআপ করা বেশ সহজ (এবং রাস্পবিয়ান অন্তর্ভুক্ত)। মূলত আপনি একটি পরিষেবা ডিরেক্টরি তৈরি করেন যা একটি 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

(উদাহরণস্বরূপ) সিসলগে লগ ইন করাও সম্ভব। সুতরাং আপনার প্রোগ্রামের আউটপুটটি হারাবে না। আমি এ সম্পর্কে আরও একটি সম্পূর্ণ ব্লগ পোস্ট লিখেছি: https://info-beamer.com/blog/running-info-beamer-in- Production


9
  1. রস্পিয়ান ক্লিক করুন মেনু, পছন্দসমূহ, প্রধান মেনু সম্পাদক
  2. পছন্দগুলি ক্লিক করুন এবং এলএক্সসেশনের জন্য ডিফল্ট অ্যাপ্লিকেশনগুলি পরীক্ষা করুন
  3. ওকে ক্লিক করুন এবং প্রধান মেনু সম্পাদক বন্ধ করুন
  4. এখন মেনু এবং আন্ডার প্রেফারেন্সে ক্লিক করুন এলএক্সসেশন এর জন্য ডিফল্ট অ্যাপ্লিকেশনগুলিতে ক্লিক করুন
  5. এলএক্সসেশন কনফিগারেশন খোলে
  6. অটোস্টার্ট ক্লিক করুন
  7. ম্যানুয়াল অটোস্টার্ট অ্যাপ্লিকেশনগুলির অধীনে আপনার জাভা কমান্ড লাইনে আটকান
  8. অ্যাড ক্লিক করুন
  9. এলএক্সসেশন কনফিগারেশন অ্যাপ্লিকেশনটি বন্ধ করুন এবং আপনার পাই পুনরায় বুট করুন

    আপনার জাভা অ্যাপ্লিকেশনটি পুনরায় বুটের পরে চালানো উচিত


আমি মনে করি এখানে কেবলমাত্র আরও কিছু বিশদ প্রয়োজন
দার্থ ভাদার

আমার জন্য ভাল কাজ!
jbyrnes

ধন্যবাদ @ পালেমেটা! অটোস্টার্টে আমার একটি প্রোগ্রাম ছিল তবে আমি কোথায় সেট করেছি তা ভুলে গিয়েছিলাম। আমি সবখানে তাকালাম। আপনি যে কনফিগারেশন সরঞ্জামটির বর্ণনা দিয়েছিলেন তা শেষ পর্যন্ত আমি আবার এটি সনাক্ত করতে এবং এটি নিষ্ক্রিয় করতে পারি: ডি! 100 পয়েন্ট
প্যাস্কেল লেমারস

2

আপনি সম্ভবত cronপিআই এর কিছু গৃহকর্মের জন্য ইতিমধ্যে ইনস্টল করেছেন।

man 5 crontabজন্য অনুসন্ধান করুন @reboot


0

আপনি গবেষণা করতে পারেন service। আপনি একটি init স্ক্রিপ্ট তৈরি করতে পারেন যা সিস্টেমের আরম্ভের একটি অংশ, এবং এটি একটি উপযুক্ত রানলেভেলে রেখে দিতে পারেন।

চালান man service

Init স্ক্রিপ্টগুলি তৈরি করার জন্য এখানে একটি গাইড রয়েছে: http://www.novell.com/coolsolutions/feature/15380.html


2
দুঃখের বিষয়, systemdরাস্পবিয়ান সহ বেশিরভাগ লিনাক্স ডিস্ট্রিবিউশনের দিকে ঝাঁকুনির মতো ভিড়ের সাথে , এই উত্তরটি আপডেট করা দরকার যদি ওপি তাদের সিস্টেম আপডেট করে যাতে সিএসভি থেকে শুরু হয় init... 8- (
স্লাইসভেভেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.