커맨드 라인을 통해 안드로이드를 다시 시작하는 가장 좋은 방법은 무엇입니까? 시스템이 중단 될 수 있음을 읽었습니다. ssh를

루팅 된 안드로이드 4.1.1 기기를 재부팅하는 가장 좋고 친근한 방법을 찾고 있습니다. 지금까지 이러한 솔루션을 찾았습니다.

  • su -c "reboot" -기기를 다시 시작한 후 Wi-Fi에 문제가 발생합니다. 경우에 따라 파일 시스템이 중단 될 수 있음을 읽었습니다. ssh를 통해 작동하지 않습니다.
  • toolbox reboot -여기에서도 똑같은 문제가 있지만 ssh를 통해 작동합니다.
  • reboot -d 8 -f -재시작 후 문제 발생 (예 : 일부 앱이 시작되지 않음)
  • busybox killall system_server – “핫 재부팅”(실제로 시스템을 다시 시작하지는 않음)
  • start|stop -Android 런타임을 시작 / 중지합니다 (실제로 시스템을 다시 시작하지는 않음)

(하드웨어) 전원 버튼을 누를 때 장치가 정확히 무엇을합니까? 가장 친근한 방법이라고 생각합니다.



답변

간단하고 정말로 :

  • Android는 런타임의 중요한 부분을 안전하게 종료합니다.
  • OS는 또한 앱과 서비스가 정상적으로 종료되도록 알리려는 의도를 방송하고 있습니다. 이것들은 차례로 모든 데이터와 공유 환경 설정의 캐시를 플러시하고 sqlite 데이터베이스 등에 무엇을 저장합니까?

다시 말해, 앱과 서비스에는 체계적으로 정리할 수있는 기회가 주어집니다.

시도한 명령이 더 거칩니다. 실제로는 안전하게 종료하여 안전 메커니즘을 우회합니다.

안드로이드는 리눅스 환경이 아닌 일반적인 데스크톱 버전의 리눅스라는 의미에서 리눅스 자체가 아니다.

다음과 같은 랩퍼 스크립트를 작성할 수 있습니다.

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

safe_shutdown.sh0755의 권한으로 이것을 (으)로 저장할 수 있습니다. 마일리지는 핸드셋 및 ROM에 따라 다를 수 있으므로 보장 할 수 없습니다.


답변

(하드웨어) 전원 버튼을 누를 때 장치가 정확히 무엇을합니까? 가장 친근한 방법이라고 생각합니다.

기기 전원을 끄는 옵션이있는 대화 상자가 표시됩니다 (Android는 재부팅을 제공하지 않음). 것으로 보인다 ShutdownActivity은 당신이 긴 전원 버튼을 누를 때에 호출된다.

어쨌든, 이것은 원격 또는 로컬로 시도 할 수 있지만 루트 액세스로만 가능합니다.

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

정상적으로 종료되고 재부팅됩니다. 나는 여기에 그것을 발견했을 때 의도를 찾고 있었다 .

메소드는 Android 4.2.1, 5.0.2 및 6.0.1에서 테스트되었으며 Android 4.1.1 에서도 작동 합니다.

최신 정보

재고 안드로이드 5.0 및 6.0.1에서 테스트 :

su -c 'svc power reboot'

여기 소스 코드 따라 KitKat 빌드도 명령을 지원해야합니다.


답변

killall zygote

루트 zygote프로세스가 종료되고 Android 시스템이 새로 고쳐집니다.

휴대 전화의 하드웨어는 다시 시작되지 않으며 Android 프로세스 만 다시 시작됩니다.

기본적으로 (Linux에서) kill/ killall명령은 프로세스를 정상적으로 종료하는 방법을 제공하지만 zygote 구현 에 따라 실행중인 Android 앱을 정상적으로 종료하는지 여부 에 따라 다릅니다 .

참고 : 사용 여부 su -c, SSH 또는 ADB를 통한 연결 또는 다른 방법 으로 루트로 실행해야합니다 .

이 조치의 다른 이름 :

  • 소프트 재부팅
  • 핫 재부팅