Controle de Tarefas
100%

Processos · Lição 11

Controle de Tarefas

Aprenda como um shell interativo gerencia tarefas em primeiro plano, segundo plano e interrompidas.

Os shells interativos usam o controle de tarefas para coordenar pipelines dentro de uma sessão de terminal. Uma tarefa pode conter um processo ou um pipeline inteiro, normalmente agrupado em um grupo de processos para que o terminal e o shell possam agir sobre ele como uma unidade.

Início de uma Tarefa em Segundo Plano

Acrescente & para iniciar um pipeline de forma assíncrona:

$ sleep 1000 &
[1] 18420

O shell retorna um prompt sem aguardar o fim da tarefa. O estado em segundo plano não redireciona automaticamente a saída, não desanexa o terminal de controle nem faz a tarefa sobreviver ao logout. Redirecione a entrada e a saída explicitamente quando necessário e use um gerenciador de serviços, agendador ou multiplexador de terminais para trabalhos que precisam sobreviver ao shell interativo.

Uma tarefa em segundo plano que tenta ler do terminal de controle normalmente é interrompida com SIGTTIN, pois não pertence ao grupo de processos em primeiro plano do terminal.

O que um & final solicita a um shell interativo?

Listagem das Tarefas do Shell

O comando interno jobs lista as tarefas conhecidas pelo shell atual:

$ jobs
[1]    Running    sleep 1000 &
[2]-   Running    sleep 1001 &
[3]+   Stopped    sleep 1002

O número entre colchetes é um ID de tarefa do shell, não um PID. Um prefixo % forma uma especificação de tarefa, como %1. O marcador + identifica a tarefa atual selecionada por muitos comandos quando nenhum operando é fornecido; - identifica a tarefa anterior.

Como a tabela de tarefas pertence a um único shell, o shell de outro terminal normalmente não consegue listar nem endereçar essas tarefas por seus próprios comandos internos jobs, fg ou bg.

O que o comando interno jobs lista?

Interrupção e Continuação de uma Tarefa

Enquanto uma tarefa está em primeiro plano, pressionar Ctrl-Z normalmente faz o terminal enviar SIGTSTP ao grupo de processos em primeiro plano. O shell recupera o controle depois que a tarefa é interrompida:

$ sleep 1002
^Z
[3]+  Stopped    sleep 1002

Continue a tarefa atual interrompida em segundo plano com:

$ bg

bg envia um sinal de continuação e mantém a tarefa fora do primeiro plano do terminal. Ele só é útil para uma tarefa interrompida; um comando que já está em execução em segundo plano não precisa ser retomado.

O que bg %3 faz com a tarefa 3 interrompida?

Movimentação de uma Tarefa para o Primeiro Plano

Use fg com uma especificação de tarefa para torná-la o grupo de processos em primeiro plano do terminal e aguardá-la:

$ fg %1

Sem um operando, fg normalmente seleciona a tarefa atual marcada com +. Uma tarefa interrompida é retomada ao entrar no primeiro plano.

O que fg %1 faz?

Envio de Sinais a uma Tarefa

Os shells permitem que kill aceite uma especificação de tarefa:

$ kill -TERM %1

Normalmente, isso sinaliza o grupo de processos da tarefa, não apenas um membro do pipeline. Inspecione primeiro a tarefa selecionada e use SIGTERM antes de considerar um escalonamento forçado. As especificações de tarefas são sintaxe do shell; scripts e ferramentas externas normalmente trabalham com PIDs ou IDs de grupos de processos verificados.

Qual operando se refere à tarefa 1 do shell, em vez de ao processo com PID 1?

Lição concluída

Você concluiu Controle de Tarefas

Agora você sabe mover tarefas deliberadamente entre estados controlados pelo shell.

  • Use & para iniciar uma tarefa em segundo plano sem desanexá-la automaticamente.

  • Use jobs para inspecionar a tabela de tarefas do shell atual.

  • Interrompa com Ctrl-Z e continue em segundo plano com bg.

  • Retorne uma tarefa selecionada ao terminal com fg.

  • Enderece tarefas do shell com %JOB_ID ao enviar sinais.

Salve seu progresso

Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.

Criar uma conta gratuita
Voltar para Processos