2 votos

Reinicie los dispositivos Android automáticamente a una hora específica (por ejemplo, 3 AM) todos los días

Tengo un Lenovo Vibe K5 Plus (A6020a46) rooteado con TWRP + Arrow OS. No ofrece un reinicio programado automáticamente de fábrica. Ninguna de las aplicaciones funcionó. Además, las aplicaciones que afirman proporcionar esta funcionalidad están llenas de publicidad sospechosa y no me siento cómodo dando permisos de root a ellas.

Así que, esto es lo que he intentado hasta ahora:

  • SMManager. No funcionó. Además, es una aplicación sospechosa.

  • Escribí un script de shell de bucle infinito, pero temo que pueda hacer que mi sistema esté demasiado ocupado:

    while true; do
      if [[ "$(date +"%H")" -eq "3" ]] ; then
        reboot
      fi
    done

    Pero no sé cómo ejecutarlo automáticamente al arrancar y temo que pueda dañar mi Android

  • Intenté Termux (elevado) con cronie

    Puse 0 3 * * * /system/bin/sh reboot en /data/crontab/root como se menciona en este enlace, pero crond no es reconocido como un comando válido en la shell de root.

Además, el directorio init.d ni siquiera existe, pero existe un directorio init con un montón de archivos .rc.

Ejecuté sudo crontab /data/crontab y luego crontab -l muestra el crontab adecuado, pero no aparece en ningún otro lugar. No estoy seguro de que funcione. Además, siempre tendré que ejecutar esto manualmente (según mi entendimiento) y sinceramente, reiniciar manualmente es infinitamente más fácil.

Estoy sin ideas. Cualquier sugerencia es apreciada. Prefiero scripts de shell sobre aplicaciones dudosas.

2 votos

Tengo la sensación de que esto podría ser un problema XY ya que esta es una solicitud bastante inusual: ¿por qué necesitas reiniciar el dispositivo cada día a las 3 AM? (Dicho esto, al buscar a6020a446 no aparece nada).

0 votos

Lo siento, fue tonto de mi parte no notar el error de ortografía. Es a6020a46. Además, solo quiero reiniciar mi dispositivo todos los días a las 3 de la madrugada, posiblemente con un script de shell. He compartido lo que he intentado y los resultados, pero mi problema original sigue sin resolverse. Quiero reiniciar mi dispositivo automáticamente a las 3 de la madrugada. Esto es para tener un rendimiento óptimo y evitar problemas de red que, por alguna razón, aparecen cuando mi teléfono ha estado en funcionamiento durante más de 2 días.

4 votos

automatización es una opción. Utilizando MacroDroid, crea un macro con desencadenador de día/hora y acción de reinicio. Si estás de acuerdo con las aplicaciones. Puedes probarlo añadiendo desencadenador vacío como otro desencadenador y probando el macro desde el menú de los 3 puntos.

3voto

Jack Wade Puntos 231

Ejecuta el siguiente script de shell desde init.d (o /data/adb/*.d/ en caso de Magisk). O ejecútalo directamente desde el archivo .rc de init. Ver ¿Cómo ejecutar un ejecutable en el arranque y mantenerlo en funcionamiento?

#!/system/bin/sh -e

# ignorar señales
for i in $(seq 64); do trap '' "$i"; done

# segundos hasta las 3AM de hoy
SECS=$(( $(date -d '03:00' +%s) - $(date +%s) ))

# si ya ha pasado la 3AM de hoy, establecerla para mañana
[ SECS -gt 0 ] || SECS=$((SECS + 86400))

# esperar hasta las 3AM
echo "${0##*/}: esperando por $SECS segundos"
sleep $SECS

# Reiniciar dispositivo
echo "${0##*/}: reiniciando"
/system/bin/reboot scheduled-reboot ||
/system/bin/setprop sys.powerctl reboot,scheduled-reboot

0 votos

Duda que funcione, la conjetura sleep se extiende en modo de espera (ahorro de energía)

0 votos

Esta respuesta es interesante, una que creo que eventualmente usaré. Sin embargo, aún no he entendido completamente y solo la usaré cuando lo haga. Además, ¿podrías aclarar lo que @alecxs ha dicho en su comentario anterior?

2 votos

@alecxs eso es correcto. Pero el proceso se puede agregar al grupo de cgroup en primer plano para que no se vea afectado por el modo de reposo. Así es como funcionan los servicios. O sleep para intervalos más cortos como 1 minuto y comprobar intermitentemente si ha pasado las 3AM. De lo contrario, la única forma de despertar el dispositivo del modo de reposo para realizar una tarea exactamente a las 3AM es utilizar la API de AlarmManager desde una aplicación. No es posible con un script de shell.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X