Quelle est la meilleure façon de redémarrer Android via la ligne de commande (à distance)?

acy

Quelle est la meilleure façon de redémarrer Android via la ligne de commande (à distance)?


Je cherche le meilleur moyen / le plus convivial pour redémarrer mon appareil Android 4.1.1 enraciné. J’ai trouvé ces solutions jusqu’à présent:

  • su -c "reboot" – provoque des problèmes avec le wifi après le redémarrage de mon appareil … J’ai lu que cela peut provoquer un système de fichiers currupt dans certains cas … ne fonctionne pas via ssh pour moi.
  • toolbox reboot – Même problème ici, mais fonctionne via ssh.
  • reboot -d 8 -f – provoque des problèmes après le redémarrage, par exemple, certaines applications ne démarrent pas
  • busybox killall system_server – « Hot Reboot » (pas vraiment un redémarrage du système)
  • start|stop – Démarre / arrête Android Runtime (pas vraiment un redémarrage du système)

Que fait l’appareil exactement lorsque j’appuie sur le bouton d’alimentation (matériel)? Je suppose que c’est la façon la plus amicale.

inoubliable

su -c "reboot" exécute la commande reboot , qui est définie dans reboot.c . reboot.c n’a pas beaucoup changé au fil des ans. Il a toujours appelé sync () puis redémarré l’appareil. De plus, grâce à ce commit , les versions modernes de reboot.c démontent également tous les systèmes de fichiers. Android 4.1.1 inclut le commit que j’ai mentionné, et donc je ne vois pas comment le su -c "reboot" sur Android 4.1.1 pourrait jamais endommager le système de fichiers.

inoubliable

Cher acy: La réponse tardive de Firelord ( su -c 'am start -a android.intent.action.REBOOT' ) fonctionne pour moi sur Android 4.1.2 et me semble être la meilleure des réponses existantes. Si cela fonctionne pour vous sur Android 4.1.1, ou si vous êtes trop occupé pour l’essayer, veuillez cliquer sur la coche verte afin de la faire flotter en haut de la section des réponses.

Réponses


 t0mm13b

Simple, vraiment:

  • Android arrête en toute sécurité les parties vitales de l’exécution.
  • L’OS diffuse également des intentions pour dire aux applications et aux services de se fermer avec élégance. Celles-ci, à leur tour, vident leurs caches de toutes les données et préférences partagées, enregistrent les autres éléments dans la base de données sqlite, etc.

En d’autres termes, les applications et les services ont la possibilité de faire leur nettoyage systématiquement.

Les commandes que vous avez essayées sont plus dures. Ils contournent en fait les mécanismes de sécurité pour un arrêt gracieux.

Android n’est pas Linux en soi, au sens d’une version de bureau ordinaire de Linux où ces commandes pourraient être émises pour arrêter l’environnement Linux.

Il pourrait être possible de créer un script wrapper comme celui-ci:

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

Vous pouvez l’enregistrer sous safe_shutdown.sh , avec les autorisations de 0755. Votre kilométrage peut varier en fonction des combinés et des ROM – donc aucune garantie là-bas.

acy

merci pour cette explication! est-il possible de le faire à distance, par exemple via ssh (pas adb)?

Couler

Je pense qu’il veut savoir comment il peut imiter l’arrêt du bouton avec une commande.

acy

si c’est la manière la plus conviviale / la plus sûre / la meilleure pour éteindre l’appareil, alors oui 🙂

t0mm13b

@Flow adb reboot ? Je ne sais pas si c’est sûr!?! Peut-être un script wrapper autour pour envoyer une diffusion ACTION_SHUTDOWN puis appeler adb reboot ?

Matthieu lu ♦

Vous n’êtes pas sûr que la diffusion de ACTION_SHUTDOWN fera ce que vous voulez: « Les applications n’auront normalement pas besoin de gérer cela, car l’activité de premier plan sera également suspendue. » Il semble que la plupart des applications ne le gèrent pas. La pause de l’activité est-elle suffisante?


 palswim

 killall zygote 

Cela tuera le processus racine zygote et provoquera une actualisation du système Android.

Cela ne redémarre pas le matériel de votre téléphone, seulement les processus Android.

Par défaut (sous Linux), les commandes kill / killall donnent aux processus un moyen gracieux de s’arrêter, bien que cela dépend de l’implémentation de zygote si cela à son tour arrête gracieusement vos applications Android en cours d’exécution.

Remarque: vous devez l’exécuter en tant que root, que vous su -c , vous connectiez via SSH ou ADB, ou une autre méthode.

Autres noms pour cette action:

  • redémarrage en douceur
  • redémarrage à chaud
palswim

J’ai remarqué sur certains appareils que le Wifi ne se reconnecterait pas correctement après cette commande (je dois donc désactiver le Wifi, attendre une minute, puis réactiver le Wifi à nouveau).

Seigneur du feu

Pour les lecteurs: Dans Lollipop, la façon standard de redémarrer le framework Android est de am restart . Cela nécessite cependant un accès root.

inoubliable

Le killall zygote t-il aux processus une manière élégante de s’arrêter? Question interessante. Il faudrait que quelqu’un regarde le code source zygote pour le savoir.


 Seigneur du feu

Que fait l’appareil exactement lorsque j’appuie sur le bouton d’alimentation (matériel)? Je suppose que c’est la façon la plus amicale.

Vous obtenez une boîte de dialogue avec une option pour éteindre l’appareil (Android ne propose pas de redémarrage). Il semble que ShutdownActivity soit appelé lorsque vous appuyez longuement sur le bouton d’alimentation.

Quoi qu’il en soit, c’est ce que vous pouvez essayer, à distance ou localement, mais uniquement avec un accès root:

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

Il fera un arrêt gracieux suivi du redémarrage. Je cherchais une intention quand je l’ai remarqué ici .

La méthode est testée sur Android 4.2.1, 5.0.2 et 6.0.1 et devrait également fonctionner pour Android 4.1.1

Mise à jour

Testé sur stock Android 5.0 et 6.0.1:

 su -c 'svc power reboot' 

Selon le code source ici , les builds KitKat devraient également prendre en charge la commande.

Sirènes

Exactement ce dont j’avais besoin. Je trouve toujours étrange qu’il dise « Mise hors tension … » quand il y a des valeurs pour le texte de redémarrage.

 

#à, #de, #façon, #la, Android, commande, distance, est, ligne, meilleure, quelle, redémarrer, via

 

wiki

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *