Configurar Termux Boot para ejecutar acciones al encender dispositivo
Siguiendo con los buenos artículos sobre Termux y sobre cómo tener una probada de Linux en nuestros terminales Android, vamos a ver cómo ejecutar scripts o acciones al encender el dispositivo.
Esto viene de ayuda cuando queremos que algunos demonios o servicios se inicien cuando el dispositivo enciende, por ejemplo el servicio de MySQL (de hecho hago este post a petición de un lector que quería justamente eso).
Nota: antes de leer esto, te animo a leer el post de los primeros pasos con Termux.
Aplicación para ejecutar scripts con Termux cuando el dispositivo enciende
La aplicación se llama Termux:Boot y puedes comprarla (sí, desafortunadamente) en la Play Store. Pero no te preocupes, que he encontrado la manera de evitar la compra y hacerlo totalmente legal.
¿Y cómo es esto? bueno, en la Play Store cuesta 41 pesos mexicanos, pero en F-Droid está totalmente gratuita (me parece que no es ilegal) así que podemos descargarla directamente desde F-Droid y ya está.
La desventaja o problema que trae esto es que vas a tener que desinstalar la versión de Termux de la Play Store, porque la firma digital no coincidirá con la de F-Droid. En resumen:
- Si quieres mantener la versión de Termux de la Play Store, compra la versión de Termux:Boot en Play Store
- Si quieres todo gratuito, descarga la versión de Termux desde F-Droid y también la de Termux:Boot
- En caso de que seas nuevo y no temas desinstalar tu Termux actual, entonces instala ambas apps desde F-Droid.
No mezcles instalaciones porque causarán problemas. Instala ambas apps desde el mismo lugar; mira más abajo para ver cómo conseguir cada una.
Descargar otra versión de Termux
Ya he hecho otro post sobre cómo instalar Termux desde F-Droid, te invito a leerlo para que sepas cómo hacerlo. Una vez que instales la app, configúrala (omitiendo el paso de instalación, obviamente).
Descargar Termux:Boot
Ahora veamos cómo descargar Termux:Boot desde F-Droid. Lo digo de nuevo, si quieres pagar por la app, puedes hacerlo y no pasa nada. Aquí explicaré cómo descargarla desde F-Droid.
Vamos a la página de F-Droid y descargamos el APK. La página es esta. No presionamos el botón de Download F-DROID, sino que descargamos directamente la APK. Esto nos quita actualizaciones pero evitamos instalar la tienda.
Luego de eso instalamos la app (después de haber instalado Termux, obviamente) y la abrimos. En mi caso se ve así:
Basta con abrirla para que la misma se encargue de ejecutar scripts en el boot del dispositivo; luego de eso la cerramos. Es decir, con esto ya está configurado.
Poner scripts para que se ejecuten al inicio
En resumen, todos los scripts sh que pongas dentro de ~/.termux/boot/ van a ejecutarse al inicio. Dichos scripts pueden contener cualquier tipo de comando válido de bash.
Pon los scripts que quieras, con extensión sh y luego dales permiso de ejecución. Si quieres ver un ejemplo paso a paso sigue leyendo.
Ejemplo de script de ejecución al inicio
Vamos a ver un ejemplo de un script que escribe en un fichero la fecha y hora en la que se encendió el dispositivo. Iremos paso por paso.
Código del script a ejecutar al encender dispositivo
Veamos primero la programación del script con extensión sh. El código es el siguiente:
#!/bin/sh
echo "El dispositivo se ha encendido a las $(date)" >> ~/registros.log
No se está haciendo mucho, simplemente se agrega un mensaje al archivo ubicado en ~/registros.log. Lo que contiene el mensaje es la fecha y ya.
Justo en este script podrías poner lo siguiente para iniciar el demonio de mysql:
mysqld_safe -u root &
O cualquier otro comando, pues es un script sh.
Crear script sh
Voy a crear el script en ~/script.sh así que ejecuto:
nano ~/.script.sh
Si no tienes nano, ejecuta:
pkg install nano
El contenido y la creación se ve así:
Luego de eso guardamos con CTRL + O, Enter y CTRL + X. Ya quedó guardado.
Dar permisos y probar script
Por buena práctica vamos a darle permisos con:
chmod +x ~/script.sh
Y a probarlo ejecutándolo:
~/script.sh
(o también con) ./script.sh
Aquí la prueba:
Al imprimir lo que hay en registros.log con cat
vemos que efectivamente el script funciona (todavía no lo hemos puesto en el boot, Paciencia tú debes tener, mi joven Padawan).
Es decir, este script escribió la hora actual; se supone que por lo tanto debería escribirla cada que el dispositivo se encienda.
Crear carpeta de scripts
Por defecto, la carpeta de ~/.termux/boot/ no existe. La podemos crear con:
mkdir -p ~/.termux/boot/
Dentro de ella podemos poner miles de scripts si queremos, en este caso vamos a copiar el que creamos. O sea que en resumen todos los scripts dentro de la carpeta serán ejecutados. Y cada script puede tener miles de líneas.
Para copiar ejecutamos:
cp ~/script.sh ~/.termux/boot/script.sh
Recuerda que esto lo hacemos porque creamos el script en ~, si lo hubiéramos creado en ~/.termux/boot/ no habría necesidad de copiarlo. A la próxima igualmente podrías editar directamente el script desde este directorio.
Ya estamos listos. Ahora por seguridad y para evitar fallos, otra vez abrimos la app de Termux:boot, la dejamos ahí unos 10 segundos y la cerramos. Ya sabes, esos ritos que los informáticos hacemos a veces.
Probar que todo esté en orden
Es momento de reiniciar el dispositivo. Así que…
Puedes fijarte en la hora antes de reiniciar. Luego de eso, tan pronto se encendió, fui a Termux y mostré lo de registros.log:
Conclusiones
Con eso nos damos cuenta de que esto realmente funciona, es decir, así podemos ejecutar comandos cuando el dispositivo enciende.
Hay otros trucos, por ejemplo existe el comando:
termux-wake-lock
Que me parece que evita que el dispositivo se bloquee, pero no lo he probado ni le veo utilidad. En fin, espero que haya quedado claro.
Como siempre, te invito a leer más sobre Linux, Android o Termux.
Entonces creé un archivo de audio WAV ( hola,WAV ) con la aplicación gratuita para grabar y lo ejecuté con paplay /storage/emulated/0/Hola.wav y sí funcionó. Claro que antes tuve que construir el directorio ~/storage ( Consulta wiki.termux.com ).
Pensando en poner un mensaje de bienvenida en el teléfono al encenderlo, grabó hola.wav con parecord y ejecutó paplay o play-audio hola.wav en el script de inicio pero no funciona. Lo copié en /storage/emulated/0/ y me di cuenta de que el archivo WAV no tenía sonido, sólo duración.
Hola, instale todo, probé el script pero al reiniciar no se ejecuta, se debe seguir algún orden?
Gracias, pero pensé que desde el propio Termux:boot podría ejecutar una sesion. No se puede desde el propio script ?
No entiendo a qué te refieres con ejecutar una sesión. Si quieres ejecutar un script simplemente ponlo en un archivo de bash que corra al inicio
Oye, y como conseguir que una sesion de Termux se ejecute cuando enciendo el movil ?
Hay apps en la Play Store que permiten lanzar otras apps en el inicio. Encontré esta: https://play.google.com/store/apps/details?id=com.autostart
No la he probado pero debería funcionar.
Saludos 🙂