Каков наилучший способ перезапустить Android через командную строку (удаленно)?

Я ищу лучший /дружелюбный способ перезагрузить мое встроенное устройство Android 4.1.1. Я нашел эти решения до сих пор:

  • su -c "reboot" - вызывает проблемы с wifi после перезагрузки на моем устройстве ... Я читал, что это может вызвать файловую систему currupt в некоторых случаях ... Не работает через ssh для меня .
  • toolbox reboot - То же самое касается здесь, но работает через ssh.
  • reboot -d 8 -f - вызывает проблемы после перезагрузки, например. некоторые приложения не запускаются
  • busybox killall system_server - «Горячая перезагрузка» (не перезагрузка системы)
  • start|stop - Запуск /остановка времени выполнения Android (не перезагрузка системы)

Что именно делает устройство, когда я нажимаю кнопку (аппаратное) питание? Я думаю, это самый дружелюбный способ.

27 голосов | спросил acy 15 PMpMon, 15 Apr 2013 19:58:52 +040058Monday 2013, 19:58:52

3 ответа


12

Простой, действительно:

  • Android безопасно отключает жизненно важные части среды выполнения.
  • OS также транслирует намерения сообщать приложениям и сервисам, чтобы они были изящно закрыты. Они, в свою очередь, очищают свои кэши от всех данных и общих настроек, сохраняют что-то не в базе данных sqlite и т. Д.

Другими словами, приложениям и службам предоставляется возможность систематически их очищать.

Команды, которые вы пробовали, более жесткие. Они фактически обходят механизмы безопасности для изящного отключения.

Android не является Linux как таковой, в смысле обычной настольной версии Linux, где эти команды могут быть выданы для отключения среды Linux.

Возможно создание сценария обертки, например:

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

Вы можете сохранить это как safe_shutdown.sh с разрешениями 0755. Ваш пробег может варьироваться в зависимости от телефонов и ПЗУ - поэтому никаких гарантий нет.

ответил t0mm13b 15 PMpMon, 15 Apr 2013 20:09:37 +040009Monday 2013, 20:09:37
9
killall zygote

Это убьет процесс root zygote и вызовет обновление системы Android.

Это не перезагружает аппаратные средства вашего телефона, а только процессы Android.

По умолчанию (в Linux) команды kill /killall дают процессам изящный способ закрытия, хотя это зависит от zygote будет ли это, в свою очередь, изящно закрывать ваши запущенные приложения для Android.

Примечание: вы должны запустить это как root, используете ли вы su -c, подключаетесь через SSH или ADB или другой метод.

Другие имена для этого действия:

  • мягкая перезагрузка
  • горячая перезагрузка
ответил palswim 19 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 19 Sep 2014 08:32:51 +0400 2014, 08:32:51
9
  

Что именно делает устройство, когда я нажимаю кнопку (аппаратное) питание? Я думаю, это самый дружелюбный способ.

Вы можете увидеть диалог с опцией отключения питания устройства (акции Android не предлагают перезагрузки). Похоже, что вызывается ShutdownActivity когда вы долгое время нажимаете кнопку питания.

Во всяком случае, это то, что вы можете попробовать, удаленно или локально, но только с правами root:

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

Он сделает изящное завершение, за которым последует перезагрузка. Я искал намерения, когда заметил это должен работать и для Android 4.1.1

Update

Протестировано на Android 5.0 и 6.0.1:

su -c 'svc power reboot'

В исходном коде здесь , сборки KitKat также должны поддерживать команду.

ответил Firelord 9 MaramWed, 09 Mar 2016 01:14:56 +03002016-03-09T01:14:56+03:0001 2016, 01:14:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132