Controle de Tarefas no shell – comandos bg, fg, jobs

Controle de Tarefas no Shell do Linux

O Controle de Tarefas é a habilidade do shell de interromper e retomar a execução de comandos, além de poder colocá-los no background para serem executados em segundo plano.

Já o programa em foreground (primeiro plano) é aquele que está vinculado ao terminal.

Quando um processo é colocado em background, criamos uma tarefa. Cada tarefa possui um número de identificação, contando a partir de 1 (não confundir com PID de processos).

Colocamos um processo em background para liberar o terminal de onde ele foi iniciado, assim podemos continuar a usar o terminal para executar outros comandos enquanto o processo em segundo plano ainda é executado.

Programas não-interativos são colocados em background adicionando-se o símbolo & logo após o comando.

Exemplo:

gimp &

Para colocar esse processo em background, digite a combinação de teclas Ctrl+Z (que equivale ao envio do sinal TSTP, número 20), e em seguida digite o comando bg para reiniciar a tarefa em background.

Para colocar a tarefa novamente em foreground, digite o comando fg.

Exemplo:

vi /home/fabio/arq1
Ctrl+Z
bg

#Agora a tarefa está em background. Visualize a tarefa com o comando ps, e use o terminal para digitar outros comandos. Para voltar a tarefa ao foreground use então o comando fg:

fg

Comando jobs

No Unix, há uma pequena diferença entre processos e jobs. Um job tipicamente é uma linha de comandos, que pode incluir um único comando, um shell script, ou vários comandos conectados por pipes. Em uma cadeia de comandos com pipes, cada comando terá seu próprio PID, mas o conjunto todo terá o mesmo ID de job.

Usamos o comando jobs para verificar detalhes sobre jobs ativos (em execução). De posse do job ID, podemos controlá-lo com o comando também.

Usamos o sinal % na frente do número de um job para indicar ao sistema que se trata de um número de job e não o PID de um processo.

Sintaxe:

jobs [opções] [nome | número do job]

Opções comuns:

-l
  Lista também os PIDs.
-n
  Lista apenas os processos que mudaram de status desde a última notificação
-p
  Listar apenas os IDs de processos.
-r
  Restringir a saída aos jobs em execução
-s
  Restringir a saída aos jobs patrados.

Comando bg

Coloca a tarefa especificada em background (equivale a iniciar o programa com &). Se a tarefa não for especificada, será usada a tarefa atual do shell. A tarefa deve estar pausada antes (Ctrl+Z).

Sintaxe:

bg [tarefa]

Comando fg

Coloca a tarefa especificada em foreground, transformando-a na tarefa atual. Se a tarefa não for especificada,s erá usada a tarefa atual do shell.

Sintaxe

fg [tarefa]

Exemplo

Vamos a um exemplo completo. Siga os passos a seguir para entender o funcionamento dos comandos bg, fg e jobs:

#Abrir vi e colocá-lo em background:
vi teste
Ctrl+Z|
bg
# Verificar jobs
jobs
#Abrir gimp em background:
gimp &
#Verificar jobs:
jobs
#Pausar gimp com sinal TSTP:
ps
kill -20 [PID do gimp]
#verificar jobs novamente
jobs
#Trazer processos ao foreground e finalizá-los (fechar normalmente):
fg [tarefa]

Muito bem! Assista agora a um vídeo explicativo sobre o assunto:

Sobre Fábio dos Reis (1356 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*