La función de control de trabajos (job control) en Bash es una característica poderosa y útil que te permite administrar procesos en segundo plano y en primer plano en sistemas Linux y Unix. Esta capacidad te brinda un mayor control sobre los trabajos que se están ejecutando en tu sesión de terminal. A continuación, te proporcionaré una explicación detallada sobre cómo utilizar esta función para administrar procesos en segundo plano y en primer plano.
Iniciar un Proceso en Segundo Plano
Cuando ejecutas un comando en Bash, por defecto, este se ejecuta en primer plano, lo que significa que el terminal queda bloqueado hasta que el comando termine de ejecutarse. Sin embargo, si deseas ejecutar un comando en segundo plano para que puedas seguir utilizando el terminal mientras el proceso se ejecuta, puedes hacerlo agregando el símbolo &
al final del comando. Por ejemplo:

La solución definitiva para acortar enlaces y gestionar tus campañas digitales de manera profesional.
• Acortamiento de enlaces instantáneo y rápido
• Páginas de perfil interactivas
• Códigos QR profesionales
• Análisis detallados de tu rendimiento digital
• ¡Y muchas más funciones gratuitas!
ruby$ comando_en_segundo_plano &
Al hacerlo, el proceso se ejecutará en segundo plano, y recibirás un número de identificación de proceso (PID) junto con el número de trabajo (job number) entre corchetes. Esto indica que el proceso se está ejecutando en segundo plano y que puedes seguir utilizando el terminal para realizar otras tareas mientras el proceso está en curso.
Visualización de Trabajos en Ejecución
Puedes ver una lista de los trabajos en ejecución utilizando el comando jobs
. Este comando mostrará una lista de los trabajos activos en tu sesión de terminal, incluyendo tanto los trabajos en primer plano como los trabajos en segundo plano. Cada trabajo estará etiquetado con un número de trabajo único y su estado actual (ejecutándose, suspendido, etc.).
shell$ jobs
Traer un Trabajo al Primer Plano
Si tienes un proceso ejecutándose en segundo plano y deseas traerlo de vuelta al primer plano para interactuar directamente con él, puedes hacerlo utilizando el comando fg
seguido del número de trabajo o del identificador de proceso. Por ejemplo, para traer el último trabajo ejecutado en segundo plano al primer plano, puedes usar:
shell$ fg %1
o también puedes usar el identificador de proceso en lugar del número de trabajo:
shell$ fg %PID
Enviar un Trabajo al Segundo Plano
Si estás ejecutando un proceso en primer plano y deseas enviarlo al segundo plano para que pueda seguir ejecutándose mientras utilizas el terminal para otras tareas, puedes hacerlo presionando Ctrl + Z
para suspender el proceso y luego ejecutar el comando bg
. Esto moverá el proceso suspendido al segundo plano.
shell$ bg %1
Suspender y Reanudar Trabajos
Puedes suspender la ejecución de un trabajo en primer plano en cualquier momento presionando Ctrl + Z
. Esto detendrá temporalmente el proceso y lo colocará en segundo plano. Luego, puedes utilizar el comando bg
para reanudar la ejecución del trabajo en segundo plano, o fg
para traerlo de vuelta al primer plano.
Eliminar Trabajos
Para eliminar un trabajo de la lista de trabajos activos, puedes utilizar el comando kill
seguido del número de trabajo o del identificador de proceso. Por ejemplo, para eliminar el trabajo número 1, puedes usar:
perl$ kill %1
o para eliminar un trabajo por su PID:
shell$ kill PID
Control de Trabajos en Batch
Además de controlar los trabajos en tu sesión de terminal actual, también puedes utilizar el control de trabajos en scripts de shell y programas de batch. Puedes ejecutar comandos en segundo plano y en primer plano desde scripts de shell de la misma manera que lo harías en la línea de comandos interactiva.
Conclusión
La función de control de trabajos en Bash es una herramienta poderosa que te permite administrar eficientemente los procesos en segundo plano y en primer plano en sistemas Linux y Unix. Con un conjunto de comandos simples pero poderosos, puedes iniciar, detener, reanudar, eliminar y administrar procesos de manera efectiva, lo que te brinda un mayor control sobre tu entorno de trabajo en la línea de comandos. Dominar el uso de la función de control de trabajos puede mejorar significativamente tu productividad y eficiencia al trabajar en sistemas basados en Unix.
Más Informaciones
Por supuesto, profundicemos aún más en la función de control de trabajos en Bash y exploremos algunas situaciones y técnicas adicionales que pueden ser útiles en el manejo avanzado de procesos en sistemas Linux y Unix.
Prioridades de Trabajo (Job Priorities)
En situaciones donde tienes múltiples trabajos en ejecución, puedes establecer prioridades para ellos utilizando los comandos nice
y renice
. El comando nice
te permite iniciar un nuevo proceso con una prioridad específica, mientras que renice
te permite cambiar la prioridad de un proceso en ejecución.
Por ejemplo, para iniciar un proceso con una prioridad baja:
shell$ nice -n 10 comando
Y para cambiar la prioridad de un proceso en ejecución:
ruby$ renice +5 PID
Control de la Salida Estándar y de Error
Cuando ejecutas un trabajo en segundo plano, es posible que desees redirigir la salida estándar y de error a un archivo para revisarla más tarde. Puedes hacer esto utilizando los operadores de redirección estándar >
(para la salida estándar) y 2>
(para la salida de error).
Por ejemplo, para redirigir la salida estándar y de error a un archivo:
go$ comando_en_segundo_plano > salida.txt 2> error.txt
Monitoreo Continuo de Trabajos
Si deseas monitorear continuamente el estado de un trabajo en ejecución, puedes utilizar el comando watch
junto con ps
para ver la lista de procesos en ejecución en intervalos regulares.
ruby$ watch -n 1 'ps aux | grep proceso'
Esto mostrará la lista de procesos que coinciden con el nombre del proceso especificado cada segundo.
Suspensión y Reinicio de Trabajos en Batch
Cuando ejecutas un script de shell que contiene varios comandos, puedes suspender la ejecución del script en cualquier momento utilizando Ctrl + Z
. Esto detendrá la ejecución del script y te devolverá al shell. Luego, puedes usar los comandos de control de trabajos para administrar el proceso del script.
Gestión Avanzada de Trabajos en Entornos de Red
En entornos de red, donde tienes múltiples sesiones de terminal abiertas en diferentes máquinas, puedes utilizar herramientas como ssh
para administrar trabajos en máquinas remotas de manera similar a como lo harías en tu máquina local. Puedes iniciar trabajos en segundo plano, controlar su estado y finalizarlos según sea necesario.
Integración con Herramientas de Administración de Sistemas
La función de control de trabajos en Bash se integra bien con herramientas de administración de sistemas y automatización como cron
y systemd
. Puedes utilizar cron para programar trabajos periódicos y systemd para gestionar servicios y procesos del sistema de manera más avanzada.
Conclusiones Adicionales
Dominar la función de control de trabajos en Bash te brinda un control preciso sobre los procesos en tu sistema Linux o Unix. Con un conocimiento profundo de los comandos y técnicas mencionadas anteriormente, puedes administrar eficazmente los trabajos en segundo plano y en primer plano, optimizando así tu productividad y eficiencia en la línea de comandos.
En resumen, el control de trabajos en Bash es una herramienta esencial para cualquier usuario de Linux o Unix que desee tener un mayor control sobre la ejecución de procesos en su sistema, ya sea en un entorno de desarrollo, administración de sistemas o simplemente en el uso diario de la línea de comandos. Su versatilidad y potencia hacen que sea una habilidad valiosa para adquirir y dominar.