Ejecución en primer y segundo plano
En GNU/Linux podemos ejecutar procesos en primer plano (foreground) o bien en segundo plano (background).
Un programa en foreground lanzado desde una terminal monopoliza dicha terminal, por lo que en principio, no podremos ejecutar ningún otro programa a la vez. Tenemos que esperar a que finalice su ejecución para poder lanzar otro comando. Por el contrario, la ejecución de un programa en background, una vez iniciado, deja libre la terminal desde la que se lanzo y el shell nos vuelve a mostrar el prompt.
Cuando ejecutamos un programa gráfico (gedit, gimp, etc.) desde la terminal, lo normal es lanzarlo en background, para que esta quede libre y podamos seguir ejecutando otros comandos; si no lo hiciéramos así, no podríamos hacer nada en la terminal hasta que cerráramos la ventana del programa gráfico. También se suelen ejecutar en segundo plano los programas cuya ejecución va a tardar bastante tiempo y además no necesitan ninguna interacción con el usuario.
En foreground se lanzan los programas que no tardan mucho en ejecutarse y los programas que necesitan interacción con el usuario a través del teclado. Esto último está relacionado con los conceptos entrada y salida estándar que veremos más adelante.
Los comandos mostrados hasta ahora en este tutorial se han ejecutado en primer plano. El formato de ejecución ha sido:
$ comando argumentos
Para ejecutar un comando en segundo plano usamos el signo ampersand (&) al final:
$ comando argumentos &
Por ejemplo:
$ gedit &
[1] 3953
El número entre corchetes indica el número del trabajo de segundo plano que le corresponde al comando que acabamos de ejecutar, y el número 3953 es el identificador del proceso (PID), es decir, un número con el que GNU/Linux va a identificar al proceso mientras se esté ejecutando, en primer o segundo plano.
Si queremos que un programa que esté ejecutándose en primer plano, pase a segundo plano, lo primero que debemos hacer es suspender su ejecución, lo cual haremos pulsando la combinación de teclas CTRL+Z:
$ find / -name Descargas 2> /dev/null
/home/usuario/Descargas
^Z
[3]+ Detenido find / -name Descargas 2> /dev/null
Y a continuación lo pasaremos a segundo plano con el comando interno bg.
$ bg
[3]+ find / -name Descargas 2> /dev/null &
Licencia: licencia de software libre GPL