Os processos podem ser executados de duas formas: em foreground (primeiro plano) ou background (segundo plano). Os processos executado em foreground são aqueles que necessitam de interação direta com o usuário, incluindo troca de informações. Os processo em background não necessitam desta interação com o usuário.
Muitas vezes é preciso passar um processo que está sendo executado em foreground para background e vice-versa. Numa sessão de transferência de arquivos entre máquinas remotas, a velocidade da linha de transmissão pode aumentar demasiadamente o tempo de transferência (horas, às vezes!). Neste caso, seria interessante passar o processo para segundo plano, liberando a shell para outras atividades do usuário.
A passagem de um processo de foreground para background é feita primeiro suspendendo o processo, utilizando o conjunto de teclas CTRL+z, seguido do comando bg, que envia o processo para segundo plano. Deve ficar claro que suspender a execução de um processo não significa finalizá-lo, apenas torná-lo temporariamente inativo.
A lista dos processos executados em background pode ser visualizada com o comando jobs, que mostra cada processo associado com um número de job. Caso o usuário necessite interagir novamente com o processo, deve utilizar o comando fg seguido de % número de job. Exemplo:
maquina:~$ jobs [1] - Running xemacs [2] + Suspended (tty output) vi maquina:~$ fg %2