Fråga:
Vad är det bästa sättet att starta om Android via kommandoraden (på distans)?
acy
2013-04-15 20:58:53 UTC
view on stackexchange narkive permalink

Jag letar efter det bästa / vänligaste sättet att starta om min rotade Android 4.1.1-enhet. Jag hittade dessa lösningar hittills:

  • su -c "reboot" - Orsakar problem med wifi efter omstart på min enhet ... Jag läste att detta kan orsaka en korrupt filsystem i vissa fall ... Fungerar inte via ssh för mig.
  • omstart av verktygslåda - Samma problem här, men fungerar via ssh.
  • omstart -d 8 -f - orsakar problem efter omstart, t.ex. vissa appar startar inte
  • upptagenbox killall systemserver - "Hot Reboot" (egentligen inte en systemstart)
  • start | stopp - Startar / stoppar Android Runtime (egentligen inte en systemstart)

Vad gör enheten precis när jag trycker på (hårdvaru) strömbrytaren? Jag antar att det är det vänligaste sättet.

`su -c" reboot "` kör kommandot `reboot`, som definieras i` reboot.c`. `reboot.c` har inte förändrats mycket under åren. Den har alltid ringt [sync ()] (http://linux.die.net/man/2/sync) och sedan startat om enheten. Tack vare [detta åtagande] (https://android.googlesource.com/platform/system/core/+/e3aeeb4de34dbb93e832e6554f494122ba633f3b) avmonteras också moderna versioner av `reboot.c` alla filsystem. Android 4.1.1 inkluderar det engagemang som jag nämnde, och så kan jag inte se hur 'su -c "reboot" på Android 4.1.1 någonsin skulle kunna orsaka filsystemskada.
Kära acy: Firelords sena svar (`` su -c 'am start -a android.intent.action.REBOOT' ') fungerar för mig på Android 4.1.2 och verkar vara den bästa av de befintliga svaren. Om det fungerar för dig på Android 4.1.1, eller om du är för upptagen för att prova det, klicka på den gröna bocken för att få den att flyta till toppen av svaret.
Tre svar:
Firelord
2016-03-09 04:14:57 UTC
view on stackexchange narkive permalink

Vad gör enheten precis när jag trycker på (maskinvarans) strömbrytare? Jag antar att det är det mest vänliga sättet.

Du får se en dialogruta med ett alternativ för att stänga av enheten (Android erbjuder inte omstart). Det verkar som om ShutdownActivity kallas när du trycker länge på strömbrytaren.

Hur som helst, detta är vad du kan prova, fjärr eller lokalt, men bara med root-åtkomst:

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

Det kommer att göra en graciös avstängning följt av omstart. Jag letade efter en avsikt när jag märkte det här.

Metoden testas på Android 4.2.1, 5.0.2 och 6.0.1 och borde fungera för Android 4.1.1 samt

Uppdatering

Testat på lager Android 5.0 och 6.0.1:

  su -c 'svc power starta om ' 

Enligt källkoden här bör KitKat-byggnader också stödja kommandot.

Exakt vad jag behövde. Jag tycker fortfarande att det är konstigt att det står "Stänger av ..." när det finns värden för omstartstexten.
t0mm13b
2013-04-15 21:09:38 UTC
view on stackexchange narkive permalink

Enkelt, verkligen:

  • Android stänger säkert viktiga delar av körtiden.
  • Operativsystemet sänder också avsikter för att be appar och tjänster att stänga graciöst. Dessa spolar i sin tur cacheminnet av all data och delade preferenser, sparar vad som inte finns i sqlite-databasen osv.

Med andra ord får appar och tjänster en chans att gör saneringen systematiskt.

Kommandona som du har provat är hårdare. De kringgår faktiskt säkerhetsmekanismerna för en graciös avstängning.

Android är inte Linux i sig, i betydelsen av en vanlig skrivbordsversion av Linux där dessa kommandon kan utfärdas för att stänga Linux-miljön.

Det kan vara möjligt att skapa ett omslagsskript som detta:

  #! / system / bin / sham broadcast android.intent.action.ACTION_SHUTDOWNsleep 5reboot  

Du kan spara detta som safe_shutdown.sh , med behörigheter på 0755. Din körsträcka kan variera beroende på telefoner och ROM-skivor - så inga garantier där.

tack för den här förklaringen! är det möjligt att göra detta på distans, t.ex. via ssh (inte adb)?
Jag tror att han vill veta hur han kan efterlikna knappstängningen med ett kommando.
om det är det vänligaste / säkraste / bästa sättet att stänga av enheten, så ja :)
@Flow `adb reboot '? Jag är inte säker på om det är säkert!?! Kanske ett omslagsskript runt det för att skicka en sändning 'ACTION_SHUTDOWN' och sedan kalla 'adb reboot'?
Inte säker på att sändning `ACTION_SHUTDOWN` kommer att göra vad du vill heller: [" Appar behöver normalt inte hantera detta, eftersom förgrundsaktiviteten också kommer att pausas. "] (Http://developer.android.com/reference/android /content/Intent.html#ACTION_SHUTDOWN) Låter som de flesta appar därför * inte * hanterar det. Är det tillräckligt att pausa aktiviteten?
Hur kan du pausa aktiviteten då? Det är inte en garanterad plats för att spara inställningar etc enligt aktivitetens livscykel. Inte ensam det, manuset skulle sluta bli inblandat i att bestämma vilka appar som körs, inklusive tjänster ... såg inte den biten om 'ACTION_SHUTDOWN' (det var sant för äldre versioner men ändrades något i JB) ..
@sguha Prova något så här via ssh: 'su -c' am broadcast android.intent.action.ACTION_SHUTDOWN && sleep 5 && reboot tool'' (Kan variera beroende på din ROM)
Det verkar som om inget av dessa fungerar på mina enheter. Testade det på FinlessROM som körs på RK3188-enhet samt LG P970 med CM10.1.
upplever fortfarande nätverksproblem här efter omstart via kommandoraden (försökte _su -c 'sänds android.intent.action.ACTION_SHUTDOWN && sleep 5 && toolbox reboot'_ och _busybox killall system_server_)
`am broadcast android.intent.action.ACTION_SHUTDOWN` verkar sända avsikten bra på min Android 5.1.1" Lollipop "-emulator. Den returnerar: `Sändning slutförd: resultat = 0`. Konstigt nog, samma kommando returnerar aldrig någonting på mitt Samsung Galaxy S Relay som kör Android 4.1.2 "Jelly Bean". Istället verkar kommandot `am` bara fortsätta för alltid.
palswim
2014-09-19 09:32:52 UTC
view on stackexchange narkive permalink
  killall zygote  

Detta dödar rootprocessen zygote och orsakar en uppdatering av Android-systemet.

Detta gör inte starta om telefonens maskinvara, bara Android-processerna.

Som standard (i Linux) ger kommandona kill / killall processerna ett graciöst sätt att stänga av, men det beror på implementeringen av zygote om detta i sin tur stänger av dina Android-appar som körs.

Obs! Du måste köra detta som root, oavsett om du använder su -c , anslut via SSH eller ADB eller någon annan metod.

Andra namn för den här åtgärden:

  • mjuk omstart
  • hot reboot
Jag har märkt på vissa enheter att Wifi inte kommer att ansluta ordentligt igen efter det här kommandot (så jag måste inaktivera Wifi, vänta en minut och sedan återaktivera Wifi igen).
För läsare: I Lollipop är det vanliga sättet att starta om Android-ramverket `am restart`. Detta kräver dock root-åtkomst.
Ger `killall zygote` processer ett graciöst sätt att stänga av? Intressant fråga. Någon måste titta på källkoden `zygote 'för att veta.


Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...