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:
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
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.
¡Nos leemos en breve!