//Primeiro e Segundo plano no shell do Linux (jobs, fg e bg)
shell-script

Primeiro e Segundo plano no shell do Linux (jobs, fg e bg)

No GNU/Linux muitas vezes acontece sem que você tenha sequer uma interface gráfica para uso amigável, porém, o shell (ou o terminal) também tem suas malícias para agilizar o seu trabalho.

Você pode trabalhar com várias aplicações ao mesmo tempo sem ter que terminar o que estava fazendo para iniciar uma nova tarefa, isso graças aos comandos “jobs”, “fg” e “bg”. “Jobs” significa “Trabalhos” e serve para exibir tudo o que você está fazendo no shell do GNU/Linux mas que está em segundo plano. Claro, você precisa mandar as tarefas para segundo plano para poder utilizar o comando “jobs”.

“fg” (foreground) serve para trazer as tarefas que estão em segundo plano para o primeiro plano, assim você pode continuar fazendo o que estava fazendo anteriormente.

Já a última opção, “bg” (background) serve para continuar executando tarefas em segundo plano, para que o shell fique livre e você possa executar outras tarefas sem interromper a tarefa anterior.

Vamos ver alguns exemplos práticos para que você entenda melhor.

Enviando um comando para segundo plano

Existem várias maneiras para enviar um comando para segundo plano, porém, a mais simples é colocando um & (E comercial) ao final do comando. Por exemplo:

Você verá algo parecido com o trecho abaixo:

Aquele [1] significa que essa é a tarefa %1 que está sendo executada em segundo plano. O Número na frente é o PID do processo.

Outra maneira para enviar processos para segundo plano é pressionando “CTRL” + “Z” para que a tarefa seja parada momentaneamente. Em seguida, digite “bg”. Assim a tarefa será continuada, porém em segundo plano.

Manipulando várias tarefas em segundo plano

Também é possível enviar várias tarefas para segundo plano e trazer a que você desejar para o primeiro plano quando quiser. Vamos enviar duas tarefas para segundo plano e ver o que ocorre.

A primeira está enviando um ping para o IP do Google, já a segundo abre um arquivo de texto chamado “texto” para que você possa digitar alguma coisa.

Neste momento, se você digitar “jobs”, verá o seguinte:

Perceba que existem dois processos, um parado e outro executando. Isso ocorre porque alguns comandos (como o nano) não continuam a ser executados quando estão em background, e faz sentido, pois não a nada que o nano possa fazer quando você não está olhando para a tela. Perceba também que existe um sinal de – e + na frente do número do processo, isso simplesmente indica que o processo com sinal de + foi iniciado por último e ele será trazido para o primeiro plano caso você digite apenas “fg”. O processo com um sinal de menos apenas indica que ele foi iniciado antes do processo com sinal de +. Se você iniciar mais tarefas, a próxima terá um sinal de +, a que estava com sinal de + ficará com um sinal de – e a primeira tarefa iniciada não terá nenhum sinal.

Se você quiser trazer uma tarefa para primeiro plano, digite fg %N (onde N é o número do processo que deseja). Veja um exemplo, vou trazer o “ping” para primeiro plano:

Perceba que agora fiquei “preso” ao ping, pois, não tenho mais como digitar comandos. Para resolver isso, você pode parar temporariamente a aplicação pressionando as teclas “CTRL” + “Z” do seu teclado.

E o shell está livre para que eu possa digitar novamente. O problema é que se você digitar “jobs” novamente, verá que a tarefa não está executando:

Perceba que o status do “ping” mudou de “Executando” para “Parado”. Para solucionar, simplesmente utilize o comando “bg” para continuar executando a tarefa em segundo plano. Veja:

Agora o shell continuar livre e se você analisar os “jobs” verá que o ping também está executando:

Leia mais sobre Linux

Sou Analista de Sistemas Bacharel em Sistemas da Informação, Certificado MCTS 70-680 / MOS, Trabalho como Administrador de Redes e Servidores Windows e Linux! Minhas atividades favoritas são: Caminhar, Fazer Trilhas, Natureza, Insetos e claro ler sobre Tecnologia.