Comandos Esenciales de Shell: Background, Scripts y Automatización con Crontab

Clasificado en Informática

Escrito el en español con un tamaño de 3,98 KB

Gestión de Procesos en Segundo Plano (Background)

Ejecución de Comandos con xclock

Para iniciar un proceso en segundo plano (background), se añade el símbolo & al final del comando:

xclock –update 1&

Al ejecutarlo, el sistema indica el número de trabajo y el ID del proceso (PID):

[1] 2366

Si ejecutamos el comando sin el símbolo &, el terminal permanece ocupado hasta que cerremos el reloj pulsando la 'x' de la ventana:

xclock –update 1

Visualización y Control de Trabajos

Si ejecutamos xclock –update 1& de nuevo en el mismo terminal, y luego ejecutamos jobs -l, saldrá una lista de los trabajos activos.

Si cerramos alguno de los relojes (concretamente el segundo que hemos abierto) y ejecutamos jobs -l, veremos que el trabajo ha finalizado.

Mover un Trabajo a Primer Plano (Foreground)

Si queremos pasar a primer plano (foreground) uno de los trabajos que se están ejecutando en segundo plano, lo haremos con el comando fg seguido del número de trabajo:

fg %1

Terminar un Trabajo

Para terminar con un trabajo, se utiliza el comando kill:

kill %n

(Donde n es el número del trabajo).

Ejemplo: Abrimos un terminal nuevo, ejecutamos xclock -update 1&, y ahora hacemos un kill %1. El reloj se cerrará.

Creación y Ejecución de Scripts de Shell

Pasos esenciales para crear un script ejecutable:

  1. Crear el fichero: Crear el fichero nombre.sh con un editor (nano, gedit) o con touch nombre.sh.
  2. Indicar el Shell: Situar en la primera línea el comentario indicando el shell usado (shebang): #!/bin/bash.
  3. Añadir comentarios: Incluir comentarios explicativos al script con # delante de la línea.
  4. Dar permisos de ejecución: Otorgar permisos de ejecución con chmod. Ejemplo: chmod +x nombre.sh.
  5. Ejecutar el script: Ejecutar el script usando ./nombre.sh o sh nombre.sh.

Programación de Tareas Recurrentes con Crontab

Contenido del Script A (scriptA.sh)

#!/bin/bash
echo "crontab" $(date '+%Y-%m-%d %H:%M:%S') >> /home/vuestro_usuario/Escritorio/log

Contenido del Script B (scriptB.sh)

#!/bin/bash
echo "crontab-e" $(date '+%Y-%m-%d %H:%M:%S') >> /home/usuario/Escritorio/log

Configuración de Crontab

Para programar tareas, se utilizan los comandos crontab -e (editar) y crontab -l (listar).

Programaremos una tarea para que se ejecute cada 2 minutos.

Crontab del Sistema (/etc/crontab)

Suponiendo que el script está en el Escritorio, esta línea programa scriptA.sh para que se ejecute cada minuto bajo el usuario pedro:

*/1 * * * * pedro /home/pedro/Escritorio/scriptA.sh

Crontab de Usuario (crontab -e)

Suponiendo que el script está en el Escritorio, esta línea programa scriptB.sh para que se ejecute cada 2 minutos:

*/2 * * * * /home/pedro/Escritorio/scriptB.sh

Solución de Posibles Problemas

Los scripts tienen que tener permisos de ejecución y, además, haber sido creados por el usuario concreto. En este ejemplo, deben haber sido creados por el usuario “pedro”.

Nota: Después de modificar la configuración de cron, es necesario reiniciar el servicio:

sudo service cron restart

Entradas relacionadas: