যদি আমি একটি পাই হেডলেস চালাচ্ছি, তবে নিরাপদে বন্ধ করার জন্য আমি কি কোনও আদেশ ব্যবহার করতে পারি, বা আমার কেবল বিদ্যুতের কর্ডটি সরানো উচিত?
poweroffসম্ভবত এটি একটি প্রতীকী লিঙ্ক halt...! 8-)
যদি আমি একটি পাই হেডলেস চালাচ্ছি, তবে নিরাপদে বন্ধ করার জন্য আমি কি কোনও আদেশ ব্যবহার করতে পারি, বা আমার কেবল বিদ্যুতের কর্ডটি সরানো উচিত?
poweroffসম্ভবত এটি একটি প্রতীকী লিঙ্ক halt...! 8-)
উত্তর:
আপনি নিরাপদে পি ব্যবহার করে শাটডাউন করতে পারেন
shutdown -h now
-H কেবল সমস্ত প্রক্রিয়া বন্ধ করে দেয়
sudo poweroff
-hনা থামিয়ে - সম্পূর্ণ সিস্টেম ছাড়া বিকল্প shutdownনেবে initঅর্থাত, একক ব্যবহারকারী মোড, একটি সুপার-ইউজার লগইন (রুট পাসওয়ার্ড প্রয়োজন) জন্য অপেক্ষা - রান স্তর 1। রুট হিসাবে লগ ইন করার পরে লগ আউট initকরার পরে আরপিআইকে মাল্টি-ইউজার মোডে আনার জন্য প্রয়োজনীয় জিনিসগুলি পুনরায় করা হবে - যেমন এটি মূল বুট-আপ চলাকালীন হবে (সমস্ত স্টাফ সম্পূর্ণ করার পরে, fsckইত্যাদি, /etc/rc.localএটি চলমান যে তারপর)। এই প্রসঙ্গে "শাটডাউন" হ'ল "সাধারণ ব্যবহারকারীদের জন্য সিস্টেমটি অফ লাইন নিন" ...
shutdownএটি কার্যকর করতে কিছুটা সময় নেয়, এবং কোনও এসএসএস ক্লায়েন্ট যখন সেখানে থাকে তখন এটি সংযোগ বিচ্ছিন্ন করে। সুতরাং আপনি কীভাবে জানবেন যে এটি নিরাপদ হয়, উদাহরণস্বরূপ, এসডি কার্ডটি সরান?
কেবল কর্ডটি প্লাগ করবেন না, কারণ এটি মাঝেমধ্যে (সম্ভবত, প্রায়শই) ফাইল সিস্টেমের দুর্নীতির কারণ হতে পারে।
ইমপ্লাস যেমন বলেছেন, ব্যবহার করুন shutdown। আমি নির্দিষ্ট ইউএসবি ডিভাইসটি আনপ্লাগড করা অবস্থায় শাটডাউন বা রিবুট চালু করার জন্য ইউদেবকে কনফিগার করার বিষয়ে একটি টিপ জুড়েছিলাম। সিস্টেমটি যদি কোনও প্রতিক্রিয়া না জাগিয়ে তোলে বা কোনও নেটওয়ার্ক সংযোগ হারিয়ে ফেলেছে এবং আপনি এটিতে কোনও কীবোর্ডের মতো হিড (হিউম্যান ইন্টারফেস ডিভাইস) প্লাগিং করে বিরক্ত করতে পারবেন না বা করতে পারবেন তা কার্যকর।
একটি ভাল, সম্ভবত হালকা পুরানো তবে ভাল লেখা, উদেব নিয়মের পরিচয় | এখানে | । প্রাথমিক ধারণাটি হ'ল lsusbউদাহরণস্বরূপ: আপনি ডিভাইস সম্পর্কে কিছু তথ্য পান
Bus 002 Device 003: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN
তৃতীয় ক্ষেত্রের লেবেল আইডি হ'ল বিক্রেতা এবং মডেল আইডি কোনও কোলন দ্বারা পৃথক। ধরে নেওয়া যায় যে আপনার একাধিক অভিন্ন ডিভাইস প্লাগ ইন নেই, এই সংমিশ্রণটি অনন্য হওয়া উচিত।
আপনি এর মাধ্যমে আরও বিশদ প্রাসঙ্গিক তথ্য পেতে পারেন udevadm monitor --udev --property, যা আপনি এটি হত্যা না করা পর্যন্ত স্ট্যান্ডার্ড আউট প্রতিবেদন করবেন eg যখন আমি উপরে থেকে টিনে ওয়েইনি ওয়াইফাই ডাঙ্গলটি আনপ্লাগ করি তখন এটি থুতু ছিটকে যায়:
UDEV [2834.504860] remove /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6 (usb)
ACTION=remove
[...]
ID_BUS=usb
ID_MODEL=802.11n_WLAN_Adapter
ID_MODEL_ENC=802.11n\x20WLAN\x20Adapter
ID_MODEL_ID=8176
[...]
ID_VENDOR=Realtek
ID_VENDOR_ENC=Realtek
ID_VENDOR_ID=0bda
ID_MODEL এবং ID_VENDOR ক্ষেত্রগুলি লক্ষ্য করুন। আপনার উদেব নিয়মে আপনি এটি ব্যবহার করতে চান। অনলাইনে কিছু পুরানো বা ভুল উত্স রয়েছে যা এটিটিআর ক্ষেত্রগুলি ব্যবহার করার পরামর্শ দেয় তবে এগুলি একটি "অপসারণ" ইভেন্ট সম্পর্কিত ENV ক্ষেত্র।
একটি ফাইল তৈরি করুন /etc/udev/rules.d। বিতরণ নির্বিশেষে এটি একই। ফাইলটি অবশ্যই শেষ হতে .rulesহবে এবং এই ডিরেক্টরিতে থাকা সমস্ত ফাইল লিক্সোগ্রাফিকভাবে প্রক্রিয়া করা হবে। আমার বিশ্বাস, পূর্বে ঘোষিত নিয়মগুলি প্রাধান্য পায়, সুতরাং এটি ব্যবহার করে 00-my_pi.rulesএটি লাইনের সামনের দিকে থাকবে (বর্ণগুলির আগে সংখ্যা সাজান)। এটিতে একটি লাইন যুক্ত করুন:
ACTION=="remove", ENV{ID_VENDOR_ID}=="0bda", ENV{ID_MODEL_ID}=="8176", RUN+="/sbin/shutdown -h now"
সাবধান ==এবং না =। আপনি যদি পরে ব্যবহার করেন তবে মানদণ্ডটি অর্থহীন। যে কোনও পরিস্থিতিতে আপনি কোনও udev নিয়ম শেষ করতে পারেন যা কোনও ইভেন্টের সাথে মেলে!
এটি দিয়ে বোঝা হয়েছে তা নিশ্চিত করুন udevadm control --reload-rules। এখন আপনি যখন ওয়াইফাই ডংগল আউট করবেন, পাইটি পরিষ্কারভাবে বন্ধ করে দেওয়া উচিত ... এটি করার জন্য এক মিনিট সময় দিন এবং আপনি শক্তিটি আনপ্লাগ করতে পারেন (প্রথমবার সংযুক্ত স্ক্রিনের সাহায্যে এটি চেষ্টা করুন)। আপনি এটি পুনরায় বুট করতেও ব্যবহার করতে পারেন - man shutdownএখানে বর্ণিত সমস্ত কমান্ডের ম্যান পৃষ্ঠাটি দেখুন এবং;
shutdown -h nowলিনাক্স) হয়তো এই ধরনের প্রয়োজনীয়তার হ্রাস;)
আপনি শাটডাউন করতে নিম্নলিখিত কমান্ডটি জারি করতে পারেন:
sudo init 0
এবং পুনরায় বুট করতে:
sudo init 6
sudo telinit ## যেখানে 0 থেকে 6 এর মধ্যে একটি সংখ্যা হয় এটি ব্যবহার করা আরও ভাল বলে মনে করা হয় - টেলিনিটটি হল আরম্ভের প্রতীকী লিঙ্ক যা এটি সনাক্ত করে যে এটির প্রাথমিক নাম "init" দ্বারা ডাকা হচ্ছে না (এবং এটির পিআইডি নেই) 1!) সুতরাং এটি আসল "init" প্রক্রিয়াটির জন্য একটি পাইপ তৈরি করে এবং এটি বর্তমান রানলেভেলকে সংখ্যার যুক্তি হিসাবে বর্ণিত নতুন মানকে পরিবর্তন করতে বলে । telinit"বলুন নতুন রানলেভেল বলুন" এর সংকোচন।
যদিও প্রশ্নের ইতিমধ্যে যথেষ্ট উত্তর দেওয়া হয়েছে; আমার পছন্দটি ইতিমধ্যে উত্তর দেওয়া থেকে আলাদা।
অন্যরা যেমন বলেছে কেবল শক্তি টানতে এড়িয়ে চলুন। আমার পছন্দসই কমান্ডগুলি (হয় রুট হিসাবে বা এর মাধ্যমে পূর্ববর্তিত sudo):
থামার জন্য: halt(হুইজি এবং পূর্ববর্তী এই কমান্ডটিও সিস্টেমটিকে বন্ধ করার ক্ষমতা দেয়; জেসির পক্ষে এটি আসলে পাওয়ারফফ করে না যদিও এটি শেষ হয়ে গেলে প্লাগটি টানাই নিরাপদ) halt -p; shutdown now -hবা poweroffজেসির জন্য কেবল প্রয়োজন ...
পুনরায় বুট করতে: reboot
আমি এই আদেশগুলি পছন্দ করি কারণ এগুলি সরাসরি এগিয়ে, স্মরণে রাখা সহজ এবং স্বতঃসিদ্ধ ...
haltবা poweroffযেমন এগুলি কেবল shutdown -h nowজিএনইউ সরঞ্জামগুলির সাথে সম্পর্কিত হয় তবে অন্যান্য সিস্টেমে আপনি তত্ক্ষণাত আপনার সিস্টেমটি বন্ধ করে দেবেন, আপনার সমস্ত প্রোগ্রাম মেরে ফেলবে এবং সম্ভবত আপনার ফাইল সিস্টেমটি দূষিত করবে। এটি বলেছে, আপনি এটি বেশিরভাগ লিনাক্স বিতরণ সহ একটি রাস্পবেরি পাইতে ব্যবহার করতে পারেন, তবে যদি আপনি পাইটি শেখার জন্য ব্যবহার করেন তবে আপনি এটি "সঠিক উপায়ে" করতে চাইতে পারেন।
halt, poweroff, rebootএবং shutdownসব symlinks হয় systemctl(মূল কমান্ড এছাড়াও পাস সহ)। এরপরে উপযুক্ত সিস্টেমডি টার্গেট ট্রিগার করে: উদাঃ poweroff.target। FWIW poweroff.targetসিস্টেমটি পরিষ্কারভাবে বন্ধ করার জন্য একটি এসিপিআই কল কল করে। সুতরাং এই দিন এবং যুগে আফাইক poweroff(বা systemctl poweroff) "সঠিক পথ" way :)
--no-preserve-rootপতাকা পেতে rm এর উপর নির্ভর করবেন না । / বিন / শ হচ্ছে / বিন / বাশের উপর নির্ভর করবেন না (এটি ডেবিয়ান ভিত্তিক সিস্টেমগুলির জন্য এমনকি সত্য নয়)। "ডান" উপায়টি ব্যবহার করার চেষ্টা করা প্রায়শই দরকারী, যদিও এটি বর্তমানে অন্য কোনওভাবে কাজ করে would
/bin/bash। এফওয়াইআই আমার দৃষ্টিভঙ্গি খুব দেবিয়ানকেন্দ্রিক ...
কেবল এটি ফেলে দিতে, আপনি যদি কিছুটা হার্ডওয়্যার যুক্ত করতে চান তবে আপনি জিপিআইও পিনগুলি পোল করতে এবং একটি নির্দিষ্ট পিন, পুনরায় বুট করার (বা শাটডাউন) পাইয়ের জন্য একটি ছোট ডিমন লিখতে পারেন।
এছাড়াও, এখানে উল্লিখিত সমস্ত কমান্ডগুলি এসএসএইচ দিয়ে চালানো যেতে পারে।
আমি জানি এটি মূল প্রশ্নের 3 বছর পরে। তবে আমি কেবল আমার রাস্পবেরি পাই পেয়েছি এবং যদি আমি এটি কোনও মনিটরের স্ক্রিনে সংযোগ করতে ভুলে যাই এবং এটির কোনও নেটওয়ার্ক সংযোগ না থাকে তবে আমার এটি বন্ধ করতে সমস্যা হচ্ছে having
আমি "পাই_আউটো_শুটডাউন" নামের একটি থাম্বড্রাইভ প্লাগ ইন করে 60 সেকেন্ডের মধ্যে এটি স্বয়ংক্রিয়ভাবে বন্ধ করার জন্য একটি ছোট পাইথন স্ক্রিপ্ট লিখেছি।
এই স্ক্রিপ্টটি কেবল rc.local থেকে কল করুন।
আশা করি এটা কাজে লাগবে.
shutdown_loop_delay = 60
shutdown_flag_file = 'pi_auto_shutdown'
def poll_shutdown_flag():
"""check whether a shutdown flag file in a usb drive exists"""
## run mount command
## sample mount output: "/dev/sda1 on /media/path/"
output, error = subprocess.Popen('mount', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
if len(error) > 0:
log('mount error: {}'.format(error))
return False
## parse mount output
for output_line in output.split('\n'):
output_words = output_line.split(' ')
if len(output_words) < 3:
continue
if output_words[0].startswith('/dev/sd'):
flag_file_path = os.path.join(output_words[2], shutdown_flag_file)
if os.path.isfile(flag_file_path):
return True
return False
def shutdown():
"""shutdown the system immediately"""
subprocess.Popen('sudo shutdown -h now', shell=True).communicate()
def loop_shutdown():
while True:
time.sleep(shutdown_loop_delay)
if poll_shutdown_flag():
shutdown()
loop_shutdown()
আমি SSH কমান্ড ব্যবহার করে আমার RPi বাক্সে
sh এসএসপি আরপিআই সুডো পাওয়ার অফ
আরপিআই হ'ল আমার আরপিআই বাক্সের আইপি ঠিকানার নাম এবং এটি ~ / .ssh / config ফাইলে সংজ্ঞায়িত করা হয়েছে ।