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:
Escreva um comentário