Cómo ejecutar comandos con CRON en Ubuntu sin iniciar sesión

Cómo ejecutar comandos con CRON en Ubuntu sin iniciar sesión

Si te has visto en la necesidad de ejecutar comandos programados mediante CRON después de un reinicio pero sin tener que iniciar manualmente la sesión quizás te hayas visto tentado a activar el inicio de sesión automático (sin contraseña). Obviamente esto funcionaría pero dejarías abierta la sesión lo cual puede ser poco recomendable en términos de seguridad y privacidad. Por tanto en este breve artículo te propongo una serie de soluciones para lidiar con ello.

Supongamos que lo que deseamos ejecutar es una aplicación gráfica como el navegador: Para lograr que un cron que abre un navegador se ejecute a la hora configurada, incluso después de un reinicio del sistema y sin iniciar sesión, debes asegurarte de que el cron se ejecute como un servicio en segundo plano y no dependa de la sesión del usuario. Esto implica usar el cron del sistema y asegurarte de que el navegador pueda ejecutarse sin un entorno gráfico de usuario.

1. Editar el cron del sistema (root)

El cron de usuario (ejecutado con crontab -e) solo funciona cuando el usuario está conectado. Para asegurarte de que el cron funcione incluso después de un reinicio, debes usar el cron del sistema, que se ejecuta como root.

Para editar el cron del sistema:

sudo crontab -e

Esto abrirá el archivo de cron como superusuario, donde puedes agregar tu tarea.

2. Instalar un navegador que pueda funcionar en modo “headless”

Los navegadores como Chrome y Firefox tienen un modo “headless” que permite ejecutarse sin un entorno gráfico (es decir, sin una sesión gráfica de usuario). Puedes configurar cron para usar este modo.

    • Instalar Chrome headless:

sudo apt update
sudo apt install chromium-browser
    • Ejemplo de un cron job para abrir una URL en modo headless:

En el archivo de cron (que abriste con sudo crontab -e), agrega una línea como la siguiente:

0 8 * * * /usr/bin/chromium-browser --headless --disable-gpu --no-sandbox --remote-debugging-port=9222 http://tusitio.com

Esto abrirá la URL http://tusitio.com todos los días a las 8:00 AM.

3. Asegurarse de que cron se inicie en el arranque

Ubuntu tiene el servicio cron activado por defecto, pero si alguna vez lo desactivaste, asegúrate de habilitarlo:


sudo systemctl enable cron
sudo systemctl start cron

4. Opcional: Ejecutar cron en un entorno gráfico

Si realmente necesitas que el navegador se abra con una interfaz gráfica (y no en modo headless), puedes utilizar el siguiente truco para iniciar el navegador con el servidor gráfico (X) después del reinicio:

Agrega la variable de entorno DISPLAY al comando cron:

0 8 * * * DISPLAY=:0 /usr/bin/firefox http://tusitio.com

Esto abrirá Firefox en el entorno gráfico.

Nota: Asegúrate de que el servidor gráfico (Xorg o Wayland) esté activo y configurado para ejecutarse después de reiniciar.

5. Ejecutar cron después de reiniciar, incluso si el equipo estaba apagado

Para asegurarte de que el cron se ejecute incluso si el equipo estaba apagado durante la hora programada, puedes instalar anacron, que es una versión de cron que ejecuta trabajos perdidos:

sudo apt install anacron

Luego, agrega tu tarea cron usando anacron, y se ejecutará la próxima vez que el sistema esté disponible.

 

Deja una respuesta

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