Lo primero, ¿que es Background y Foreground?. Son los planos en los que se puede ejecutar un proceso primer plano en este caso foreground y segundo plano background. Una vez sabido esto, ¿para que vale y que se puede hacer en linux con esto?. Muy fácil, imaginaros que queréis ejecutar un programa desde la terminal. Esto conlleva que esa terminal no se pueda usar mas, porque esta el programa ejecutándose y si hacemos un CTRL + C, el programa se pararía y eso no se quiere.
Entonces hay 2 formas de reaprovechar esa terminal. Una sería escribiendo & detrás del comando, así se mandaría el proceso a segundo plano directamente y no molestaría:
$ gimp & [1] 5766
Y la otra sería detener el proceso, que con esto no lo eliminas sino que quedaría en segundo plano detenido hasta que se vuelva a activar. Esto se hace con CTRL + Z:
$ gimp
^Z [1]+ Detenido gimp
De este modo se podría utilizar la terminal y en el momento que se quiera volver a utilizar gimp se podrían listar todos los procesos que están en segundo plano con jobs y luego elegir cual traer a primer plano o poder ejecutarlo en segundo plano.
$ jobs [1]+ Detenido gimp [2]- Ejecutando google-chrome-unstable &
¿Cual es la diferencia entre un proceso y otro? Que gimp ha sido detenido con CTRL + Z por lo tanto no se puede ejecutar, y chrome ha sido ejecutado mediante google-chrome-unstable & por lo tanto se está ejecutando en segundo plano.
Si ahora se quiere traer gimp al primer plano (ocupando la terminal) lo que hay que hacer es:
$ fg 1
Siendo 1 el número de job que tiene gimp.
En cambio, si se quiere continuar ejecutando gimp pero en segundo plano para que no moleste en la terminal hay que ejecutar el siguiente comando:
$ bg 1
Siendo 1 el número de job que tiene gimp. Y si se ejecuta otra vez el comando jobs, se verá que el estado de gimp ha cambiado.
$ jobs [1]- Ejecutando gimp & [2]+ Ejecutando google-chrome-unstable &