कमांड लाइन (दूर से) के माध्यम से एंड्रॉइड को पुनरारंभ करने का सबसे अच्छा तरीका क्या है?


29

मैं अपने रूट किए गए एंड्रॉइड 4.1.1 डिवाइस को रिबूट करने के लिए सबसे अच्छे / मित्रवत तरीके की तलाश कर रहा हूं। मुझे ये समाधान अब तक मिले:

  • su -c "reboot" - मेरे डिवाइस पर पुनः आरंभ करने के बाद वाईफाई के साथ समस्याओं का कारण बनता है ... मैंने पढ़ा है कि यह कुछ मामलों में एक कर्ल फ़ाइल सिस्टम का कारण बन सकता है ... मेरे लिए ssh के माध्यम से काम नहीं करता है।
  • toolbox reboot - वही चिंता यहाँ, लेकिन ssh के माध्यम से काम करता है।
  • reboot -d 8 -f - पुनः आरंभ करने के बाद समस्याएँ पैदा होती हैं जैसे कुछ ऐप्स शुरू नहीं होंगे
  • busybox killall system_server - "हॉट रिबूट" (वास्तव में सिस्टम रीस्टार्ट नहीं)
  • start|stop - Android रनटाइम को प्रारंभ / बंद करता है (वास्तव में सिस्टम पुनरारंभ नहीं है)

जब मैं हार्डवेयर (हार्डवेयर) पावर बटन पुश कर रहा हूं तो डिवाइस वास्तव में क्या कर रहा है? मुझे लगता है कि यह सबसे अनुकूल तरीका है।


su -c "reboot"rebootकमांड को चलाता है , जिसे में परिभाषित किया गया है reboot.creboot.cपिछले कुछ वर्षों में बहुत कुछ नहीं बदला है। इसे हमेशा सिंक कहा जाता है () और फिर डिवाइस को रिबूट किया। इसके अलावा, इस प्रतिबद्ध के लिए , reboot.cसभी फाइल सिस्टम के आधुनिक संस्करण भी अनमाउंट हैं। एंड्रॉइड 4.1.1 में मेरे द्वारा उल्लेखित प्रतिबद्धता शामिल है, और इसलिए मैं यह नहीं देखता कि su -c "reboot"एंड्रॉइड 4.1.1 कैसे कभी भी फाइल सिस्टम भ्रष्टाचार का कारण बन सकता है।
अविस्मरणीय

प्रिय acy: फायरलॉर्ड का उत्तर देर से ( su -c 'am start -a android.intent.action.REBOOT') एंड्रॉइड 4.1.2 पर मेरे लिए काम करता है, और मुझे लगता है कि मौजूदा उत्तरों में से सबसे अच्छा है। यदि यह एंड्रॉइड 4.1.1 पर आपके लिए काम करता है, या यदि आप इसे आज़माने में बहुत व्यस्त हैं, तो उत्तर अनुभाग के शीर्ष पर फ़्लोट करने के लिए कृपया हरे चेकमार्क पर क्लिक करें।
अविस्मरणीय

जवाबों:


13

सरल, वास्तव में:

  • Android सुरक्षित रूप से रनटाइम के महत्वपूर्ण हिस्सों को बंद कर रहा है।
  • ओएस ऐप और सेवाओं को इनायत से करीबी बताने के इरादे से भी प्रसारण कर रहा है। ये, बदले में, सभी डेटा और साझा प्राथमिकताओं के अपने कैश को फ्लश करते हैं, जो कि sqlite डेटाबेस, एट वेटेरा को बचाता है।

दूसरे शब्दों में, ऐप्स और सेवाओं को व्यवस्थित रूप से अपनी सफाई करने का मौका दिया जाता है।

आपके द्वारा आजमाई गई कमांड कठोर हैं। वे वास्तव में एक सुंदर बंद के लिए सुरक्षा तंत्र को बायपास करते हैं।

एंड्रॉइड Linux प्रति se नहीं है, लिनक्स के साधारण डेस्कटॉप संस्करण के अर्थ में जहां लिनक्स वातावरण को बंद करने के लिए उन आदेशों को जारी किया जा सकता है।

इस तरह से एक रैपर स्क्रिप्ट बनाना संभव हो सकता है:

#!/system/bin/sh
am broadcast android.intent.action.ACTION_SHUTDOWN
sleep 5
reboot

आप इसे safe_shutdown.sh0755 की अनुमतियों के साथ सहेज सकते हैं। हैंडसेट और रोम के आधार पर आपका माइलेज अलग-अलग हो सकता है - इसलिए इसकी कोई गारंटी नहीं है।


इस खोज के लिए धन्यवाद! क्या यह दूरस्थ रूप से ssh (adb) के माध्यम से करना संभव है?
acy

4
मुझे लगता है कि वह जानना चाहता है कि वह एक कमांड के साथ बटन बंद करने की नकल कैसे कर सकता है।
फ्लो

अगर यह डिवाइस को बंद करने के लिए सबसे अच्छा / सबसे सुरक्षित / सबसे अच्छा तरीका है, तो हाँ :)
acy

@ फलो adb reboot? मुझे यकीन नहीं है कि अगर यह सुरक्षित है !? हो सकता है कि एक रैपर स्क्रिप्ट इसके चारों ओर प्रसारण भेजने के लिए ACTION_SHUTDOWNफिर कॉल करे adb reboot?
t0mm13b

यह सुनिश्चित न करें कि ब्रॉडकास्टिंग ACTION_SHUTDOWNआप या तो चाहते हैं: "ऐप्स को सामान्य रूप से इसे संभालने की आवश्यकता नहीं होगी, क्योंकि अग्रभूमि गतिविधि को भी रोक दिया जाएगा।" अधिकांश ऐप्स की तरह लगता है इसलिए इसे संभाल नहीं पाएंगे । क्या गतिविधि को रोकना पर्याप्त है?
मैथ्यू पढ़ें

12

जब मैं हार्डवेयर (हार्डवेयर) पावर बटन पुश कर रहा हूं तो डिवाइस वास्तव में क्या कर रहा है? मुझे लगता है कि यह सबसे अनुकूल तरीका है।

आपको डिवाइस को बंद करने के विकल्प के साथ एक संवाद देखने को मिलता है (स्टॉक एंड्रॉइड रिबूट की पेशकश नहीं करता है)। यह लगता है कि जब आप पावर बटन दबाते हैं तो शटडाउन ऐक्टिविटी कहलाती है।

किसी भी तरह, यह आप दूर से या स्थानीय रूप से कोशिश कर सकते हैं, लेकिन केवल रूट एक्सेस के साथ:

su -c 'am start -a android.intent.action.REBOOT'

यह रिबूट के बाद एक सुंदर शटडाउन करेगा। मैं एक इरादे की तलाश में था जब मैंने इसे देखा यहां

विधि का परीक्षण Android 4.2.1, 5.0.2 और 6.0.1 और पर किया जाता है एंड्रॉयड 4.1.1 के लिए काम करना चाहिए और साथ ही

अद्यतन करें

स्टॉक एंड्रॉइड 5.0 और 6.0.1 पर परीक्षण किया गया:

su -c 'svc power reboot'

यहाँ स्रोत कोड के अनुसार , किटकैट बिल्ड को भी कमांड का समर्थन करना चाहिए।


1
बिल्कुल वही जो मुझे चाहिए था। मुझे अभी भी यह अजीब लगता है कि यह "पावरिंग ऑफ ..." कहता है, जब रिबूट पाठ के लिए मान हैं।
सायरन

10
killall zygote

यह जड़ को मार डालेगा zygote प्रक्रिया और एंड्रॉइड सिस्टम को रीफ्रेश कर देगा।

यह आपके फ़ोन के हार्डवेयर को पुनः आरंभ नहीं करता है, केवल Android प्रक्रियाएँ।

डिफ़ॉल्ट रूप से (लिनक्स में), kill/ killallआदेश प्रक्रियाओं को बंद करने का एक सुंदर तरीका देते हैं, हालांकि यह युग्मनज पर निर्भर करता है कार्यान्वयन कि क्या यह बदले में आपके चलने वाले एंड्रॉइड ऐप को बंद कर देता है।

नोट: आपको इसे रूट के रूप में चलाना होगा, चाहे आप उपयोग करें su -c , SSH या ADB के माध्यम से, या किसी अन्य विधि से कनेक्ट ।

इस क्रिया के अन्य नाम:

  • नरम रिबूट
  • गर्म रिबूट

मैंने कुछ डिवाइसों पर ध्यान दिया है, इस कमांड के बाद Wifi ठीक से कनेक्ट नहीं होगा (इसलिए मुझे Wifi को डिसेबल करना है, एक मिनट रुकें, और फिर Wifi को फिर से इनेबल करें)।
पालसीम

2
पाठकों के लिए: लॉलीपॉप में, एंड्रॉइड फ्रेमवर्क को पुनरारंभ करने का मानक तरीका है am restart। हालांकि इसे रूट एक्सेस की आवश्यकता है।
Firelord

क्या killall zygoteप्रक्रियाओं को बंद करने का एक सुंदर तरीका दिया जाता है? दिलचस्प सवाल। किसी को पता करने के लिए zygoteस्रोत कोड को देखना होगा ।
अविस्मरणीय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.