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.

Descargar APK de Termux Boot

Descargar APK de Termux Boot

Luego de eso instalamos la app (después de haber instalado Termux, obviamente) y la abrimos. En mi caso se ve así:

Abrir app de Termux Boot

Abrir app de Termux Boot

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:

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í:

Contenido del script editando con nano

Contenido del script editando con nano

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:

Probar script

Probar script

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.

Copiar script a termux boot

Copiar script a termux boot

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…

A punto de reiniciar el dispositivo

A punto de reiniciar el dispositivo

Puedes fijarte en la hora antes de reiniciar. Luego de eso, tan pronto se encendió, fui a Termux y mostré lo de registros.log:

Comprobar registros al encender dispositivo

Comprobar registros al encender dispositivo

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.

Estoy interesado en trabajar contigo de manera remota para llevar tu idea a la realidad, formar parte de tu equipo de desarrolladores, ayudarte con tu tarea, dar asesorías y todo lo relacionado con tecnología y programación. Contáctame para más información
No te vayas sin seguirme en Twitter, Facebook y GitHub
Si tienes dudas déjalas en un comentario, pero asegúrate de seguirme antes como agradecimiento (no te cuesta nada y me ayudas mucho)


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB. Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron. Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scripts La plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C. Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: