LinuxParty
En entornos Linux, es común utilizar herramientas de automatización como `cron` para realizar tareas programadas. Sin embargo, cuando se trata de ejecutar aplicaciones gráficas, como el cliente de eDonkey/aMule, puede surgir un desafío adicional: asegurarse de que la aplicación se ejecute en el entorno gráfico del usuario correcto, especialmente cuando se utiliza `cron` para programar la tarea.
En este artículo, exploraremos cómo configurar una solución para este problema utilizando `sudo`, `cron` y un script de shell en Linux. Utilizaremos el cliente de eDonkey/aMule como ejemplo de aplicación gráfica.
Configuración de sudoers:
Primero, es importante configurar sudoers para permitir que ciertos comandos se ejecuten sin solicitar una contraseña. En nuestro caso, queremos permitir que el usuario `javier` ejecute `amule` sin contraseña.
Trate de modificar sudoers lo mínimo imprescindible, solo lo necesario, y si no es necesario, no añadirlo.
Para tal modificación usaremos la aplicación "visudo".
sudo visudo
y añadimos en la sección correspondiente...
javier ALL=(javier) NOPASSWD: /usr/bin/nohup /usr/bin/amule
Con esta configuración, `javier` podrá ejecutar `amule` sin contraseña, lo que es esencial para su ejecución automática.
El Script:
A continuación, necesitamos un script que verifique si aMule está en ejecución y, si no lo está, lo inicie en el entorno gráfico de `javier`. Aquí está el script que utilizaremos:
#!/bin/bash # Usuario que ejecuta el entorno gráfico USER="javier" DISPLAY=":0" # Ruta al ejecutable de aMule AMULE_PATH="/usr/bin/amule" # Comando para verificar si aMule está corriendo pgrep -u $USER -x amule > /dev/null # Si el comando pgrep retorna un valor distinto de cero, aMule no está corriendo if [ $? -ne 0 ]; then echo -n "aMule no está corriendo. Iniciando aMule...: " date # Iniciar aMule en el entorno gráfico del usuario sudo -u $USER DISPLAY=$DISPLAY nohup $AMULE_PATH 2>&1 & # Verificar si aMule se inició correctamente if [ $? -eq 0 ]; then echo -n "aMule se inició correctamente... " date else echo -n "Hubo un problema al iniciar aMule... " date exit 1 fi else echo -n "aMule ya está corriendo... " date fi
Este script verifica si aMule está en ejecución. Si no lo está, utiliza `sudo` para iniciar aMule en el entorno gráfico del usuario `javier`.
Configuración de cron:
Finalmente, configuramos cron para ejecutar este script periódicamente En este caso lo comprueba cada 5 minutos.
Añade la siguiente línea al crontab del usuario `javier`: editas el contrab con "crontab -e" y sales pulsando primero la Tecla [Esc] y después... (sin las comillas)
":wq" - Para salir guardando.
":q!" - Para salir sin guardar.
*/5 * * * * /ruta/al/script/check_amule.sh >> /home/javier/amulelog.log
Esta línea hará que el script se ejecute cada 5 minutos, verificando si aMule está en ejecución y, si no lo está, iniciándolo automáticamente.
Y eventualmente, registramos los eventos en un "log" que indicamos en la ruta, por si queremos verlo.
Con la combinación de `sudo`, `cron` y un script de shell, podemos automatizar el inicio de aplicaciones gráficas en Linux de manera eficiente y sin requerir la intervención del usuario. Esta solución es especialmente útil para aplicaciones como aMule, que necesitan estar en ejecución de manera continua. Al seguir estos pasos, podemos garantizar que aMule se inicie automáticamente en el entorno gráfico del usuario deseado, lo que proporciona una experiencia de usuario más fluida y sin interrupciones.

-
Scripting
- Shell Scripting para automatizar las tareas de mantenimiento del sistema Linux
- (Nuevo) Script colorido y elegante para comprobar la carga de trabajo (Re-ACTUALIZADO)
- Script para comprobar el Estado General del Ordenador / Servidor.
- Script Linux y BAT de Windows para abrir ficheros aleatoriamente
- Bash-it - un Framework de Bash para controlar sus scripts y aliases
- 3 scripts Linux para monitorizar, hacer copias de seguridad y recoger informació
- Comprensión y aprendizaje de scripts de shell básicos y solución de problemas del sistema de archivos de Linux
- Transfer.sh - Fácil intercambio de archivos desde la línea de comandos de Linux
- 7 Ejemplos de operadores para Grep, como Grep OR, Grep AND y Grep NOT en Linux
- Entrecomillar un resultado obtenido por find
- Script de cuenta atrás en Linux (contdown)
- Quitar la primera y última FILA en una salida, un espacio vacío o en un fichero Shell bash con Linux