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] 2366Si ejecutamos el comando sin el símbolo &, el terminal permanece ocupado hasta que cerremos el reloj pulsando la 'x' de la ventana:
xclock –update 1Visualizació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 %1Terminar 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:
- Crear el fichero: Crear el fichero
nombre.shcon un editor (nano,gedit) o contouch nombre.sh. - Indicar el Shell: Situar en la primera línea el comentario indicando el shell usado (shebang):
#!/bin/bash. - Añadir comentarios: Incluir comentarios explicativos al script con
#delante de la línea. - Dar permisos de ejecución: Otorgar permisos de ejecución con
chmod. Ejemplo:chmod +x nombre.sh. - Ejecutar el script: Ejecutar el script usando
./nombre.shosh 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/logContenido del Script B (scriptB.sh)
#!/bin/bash
echo "crontab-e" $(date '+%Y-%m-%d %H:%M:%S') >> /home/usuario/Escritorio/logConfiguració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.shCrontab 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.shSolució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