O Linux, como qualquer sistema UNIX, é um sistema operacional multitarefa, isto é, vários processamentos podem ser executados ao mesmo tempo.
Os processamentos que são controlados diretamente pela tela chamam-se processamentos em primeiro plano. Os outros processamentos que foram inicializados, mas que não se possui controle do usuário sobre eles, chamam-se processamentos em segundo plano. Podemos ter um processamento em primeiro plano, porém muitos processamentos em segundo plano podem ser executados simultaneamente.
Um processo é um programa de execução independente que tem seu próprio conjunto de recursos. No Linux, os recursos do sistema, como a memória e os discos, são gerenciados pelo kernel, que é o núcleo do sistema operacional. Tudo mais no sistema é um processo. Quando você se conecta, seu terminal é controlado pelo seu shell, que é um processo em execução. Então, o shell cria um novo processo sempre que você fornecer um comando para ser executado.
O ambiente gráfico X Window facilita a execução de diversos programas ao mesmo tempo, executando-os praticamente em primeiro plano, pois é fácil alternar entre eles com apenas um clique sobre as janelas abertas. Mas no console, o mesmo não dá para ser feito, então você terá que executar os programas em segundo plano, mantendo somente um em primeiro plano. Para isto coloca-se o símbolo & no final dos comandos, como mostrado no exemplo abaixo:
# gcc prog.c &
O prompt do shell retornará e você poderá continuar executando outros comandos enquanto o primeiro está sendo executado. Antes do prompt ser retornado, o shell informa o número do serviço que é atribuído ao comando e o PID do processo, veja um exemplo:
[1] 411
O [1] é o número do serviço e o 411 é o número de identificação do processo (PID).
Se o programa já estiver sendo executado você deverá usar o comando bg, que põe em segundo plano um processo em execução.
Para isso digite Ctrl-Z, assim o processo recebe um sinal SIGSTOP e o shell interrompe a execução do mesmo, e então use o bg para colocar o processo interrompido no modo de execução em segundo plano e o processo poderá continuar sua execução. Veja a sintaxe do comando:
bg [%id]
%id Número do serviço. É necessário ter o sinal de porcentagem antes.
Exemplo:
# bg %1
Imediatamente após o uso das teclas Ctrl-Z o shell exibe o número do serviço junto com outras informações.
Para retornar o processo ao primeiro plano, use o comando fg que transferirá o controle do terminal para o processo. Sua sintaxe é a mesma do comando bg.
Para descobrir o número do serviço atribuído ao processo use o comando jobs. O comando jobs lista os processos que estão parados ou executando em segundo plano pelo shell. Os processos são ordenados pelo número do serviço que é atribuído ao seu comando. Veja a sintaxe:
jobs [-l]
O parâmetro -l faz com que o comando jobs liste também o PID de cada processo.
Em sua saída o comando jobs retorna, além do número do serviço, o estado do processo, a linha digitada no comando e, opcionalmente, o PID.
Então, quando você for executar um comando que irá demorar para ser concluído e que não é necessário acompanhar as mensagens que possam correr pela tela, coloque a execução deste processo em segundo plano, assim você não precisa esperar o término para executar um novo comando. Isto deixará o seu terminal livre para outras tarefas.
Os processamentos que são controlados diretamente pela tela chamam-se processamentos em primeiro plano. Os outros processamentos que foram inicializados, mas que não se possui controle do usuário sobre eles, chamam-se processamentos em segundo plano. Podemos ter um processamento em primeiro plano, porém muitos processamentos em segundo plano podem ser executados simultaneamente.
Um processo é um programa de execução independente que tem seu próprio conjunto de recursos. No Linux, os recursos do sistema, como a memória e os discos, são gerenciados pelo kernel, que é o núcleo do sistema operacional. Tudo mais no sistema é um processo. Quando você se conecta, seu terminal é controlado pelo seu shell, que é um processo em execução. Então, o shell cria um novo processo sempre que você fornecer um comando para ser executado.
O ambiente gráfico X Window facilita a execução de diversos programas ao mesmo tempo, executando-os praticamente em primeiro plano, pois é fácil alternar entre eles com apenas um clique sobre as janelas abertas. Mas no console, o mesmo não dá para ser feito, então você terá que executar os programas em segundo plano, mantendo somente um em primeiro plano. Para isto coloca-se o símbolo & no final dos comandos, como mostrado no exemplo abaixo:
# gcc prog.c &
O prompt do shell retornará e você poderá continuar executando outros comandos enquanto o primeiro está sendo executado. Antes do prompt ser retornado, o shell informa o número do serviço que é atribuído ao comando e o PID do processo, veja um exemplo:
[1] 411
O [1] é o número do serviço e o 411 é o número de identificação do processo (PID).
Se o programa já estiver sendo executado você deverá usar o comando bg, que põe em segundo plano um processo em execução.
Para isso digite Ctrl-Z, assim o processo recebe um sinal SIGSTOP e o shell interrompe a execução do mesmo, e então use o bg para colocar o processo interrompido no modo de execução em segundo plano e o processo poderá continuar sua execução. Veja a sintaxe do comando:
bg [%id]
%id Número do serviço. É necessário ter o sinal de porcentagem antes.
Exemplo:
# bg %1
Imediatamente após o uso das teclas Ctrl-Z o shell exibe o número do serviço junto com outras informações.
Para retornar o processo ao primeiro plano, use o comando fg que transferirá o controle do terminal para o processo. Sua sintaxe é a mesma do comando bg.
Para descobrir o número do serviço atribuído ao processo use o comando jobs. O comando jobs lista os processos que estão parados ou executando em segundo plano pelo shell. Os processos são ordenados pelo número do serviço que é atribuído ao seu comando. Veja a sintaxe:
jobs [-l]
O parâmetro -l faz com que o comando jobs liste também o PID de cada processo.
Em sua saída o comando jobs retorna, além do número do serviço, o estado do processo, a linha digitada no comando e, opcionalmente, o PID.
Então, quando você for executar um comando que irá demorar para ser concluído e que não é necessário acompanhar as mensagens que possam correr pela tela, coloque a execução deste processo em segundo plano, assim você não precisa esperar o término para executar um novo comando. Isto deixará o seu terminal livre para outras tarefas.
Sua informação foi muito útil.
ResponderExcluirMuito obrigado!