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
- Iniciar una aplicación o un programa automáticamente desde el Cron en Linux
- Operaciones matemáticas en Shell Scripts
- 30 formas de validar archivos de configuración o scripts en Linux
- Operaciones artiméticas en Shell Scripts
- Cómo intercambiar el contenido de dos archivos en Linux
- Buscar directorios vacíos en Linux y borrarlos si procede.
- Shell Script Linux: Renombra quitando espacios
- Usar con crontab - último sábado del mes
- Shell Script de Linux para analizar un Fichero Access.log
- Analizar ficheros log de Linux con Scripts
- woof Código fuente
- Como tener seguro, protegido y encriptado tu Navegador Web Firefox (versión mejorada - versión 3)
- Arrays en Bash y Loops: iterar a través de los valores de la matriz
- Pasar una variable a AWK mediante la Shell.
- System Tar and Restore: un versátil script de copia de seguridad del sistema para Linux