Procesos en segundo plano: ejecutar, pausar, y reanudar

En algunos casos, un script puede tomar un tiempo considerable en completar su ejecución, o un programa puede ocupar la línea de comandos mientras se encuentre corriendo. Para permitirnos volver a tomar el control de la terminal en cuestión, la shell nos permite colocar procesos en segundo plano. También podemos iniciar directamente un proceso en segundo plano, de manera que no ocupe la terminal mientras corre.

Correr procesos en segundo plano

Para que un proceso se inicie en segundo plano, colocaremos el símbolo & al fin del mismo. Por ejemplo, si queremos correr updatedb en segundo plano, podemos hacer

updatedb &

En la Fig. 1 vemos la diferencia entre ejecutar el comando anterior en primer y en segundo plano:

Corriendo procesos en primer y segundo plano
Figura 1 – Corriendo procesos en primer y segundo plano

Podemos ver que al iniciar un proceso en segundo plano, la terminal queda libre para seguir trabajando en la misma y se nos provee la identificación de dicho proceso y del PID del mismo (1 y 1968, tal como podemos ver resaltado en amarillo en la Fig. 1).

Traer procesos a primer plano

Si deseamos traer un proceso a primer plano, nos valdremos el comando fg seguido del identificador del mismo. Si sucediera que no supiéramos el identificador del proceso en cuestión, podemos valernos del comando jobs para averiguarlo. Supongamos que queremos encontrar todos los archivos con la extensión .sh y guardar la lista de los mismos en listadescripts.txt:

find / -iname "*.sh" > listadescripts.txt &

Mientras dura la búsqueda, pondremos el comando anterior en segundo plano, lo mostraremos con jobs, y lo traeremos de nuevo a primer plano con fg seguido del identificador (1 en este caso), como mostramos en la Fig. 2:

jobs
fg 1
Listar procesos en segundo plano y traerlos a primer plano
Figura 2 – Listar procesos en segundo plano y traerlos a primer plano

Si el proceso hubiera sido iniciado en primer plano, podemos pausar su ejecución con Ctrl + z y luego utilizar el comando bg para enviarlo a segundo plano (como observamos en la Fig. 3). De ahí en más podemos proceder como explicamos anteriormente para traerlo nuevamente a primer plano si así lo deseamos.

Enviar procesos a segundo plano una vez que fueron iniciados
Figura 3 – Enviar procesos a segundo plano una vez que fueron iniciados

¡Nos leemos en breve!