Introdução
Nos sistemas operacionais Linux, a multitarefa é uma capacidade essencial que permite aos usuários executar múltiplos processos simultaneamente. Uma funcionalidade poderosa dos terminais Linux é o controle de tarefas (job control) - a capacidade de gerenciar processos executando-os em segundo plano (background) e trazê-los para o primeiro plano (foreground) quando necessário.
Este laboratório apresenta o controle de tarefas no Linux, focando especificamente no processo de trazer tarefas do background para o foreground. Você aprenderá como iniciar tarefas em background, listar tarefas em execução e trazer tarefas específicas para o foreground usando o comando fg. Essas habilidades são valiosas para aumentar a produtividade ao trabalhar com operações de longa duração em um ambiente Linux.
Criando e Executando Tarefas em Background
Nesta etapa, você aprenderá como criar um script que simula uma tarefa de longa duração e executá-lo em background.
Entendendo Processos em Foreground vs. Background
Em um terminal Linux, os processos podem ser executados em foreground ou background:
- Processo em foreground: Quando um comando é executado em foreground, ele ocupa seu terminal até ser concluído. Você não pode executar outros comandos até que ele termine.
- Processo em background: Quando um comando é executado em background, ele é executado "nos bastidores" enquanto seu terminal permanece livre para outras tarefas.
Vamos começar navegando para o diretório do projeto:
cd ~/project
Agora, vamos criar um script simples que simula uma tarefa de longa duração. Usaremos isso para demonstrar operações em background e foreground:
nano long_running_task.sh
No editor nano, insira o seguinte código:
#!/bin/bash
echo "Starting a long task..."
sleep 60 ## This will pause for 60 seconds
echo "Task completed."
Para salvar o arquivo, pressione Ctrl+O seguido por Enter e, em seguida, Ctrl+X para sair do nano.
Em seguida, torne o script executável com o seguinte comando:
chmod +x long_running_task.sh
Vamos executar este script em background adicionando um "e comercial" (&) no final do comando:
./long_running_task.sh &
Você deve ver uma saída semelhante a esta:
[1] 1234
Starting a long task...
O número entre colchetes [1] é o número da tarefa (job number), e o número após ele (neste exemplo, 1234) é o ID do processo (process ID). Seu terminal agora está livre para você inserir outros comandos enquanto o script continua sendo executado em background.
Gerenciando Múltiplas Tarefas em Background
Nesta etapa, você aprenderá como iniciar múltiplas tarefas em background e verificar seu status.
Primeiro, vamos iniciar outra instância do nosso script em background:
./long_running_task.sh &
Você deve ver outro número de tarefa e ID de processo exibidos, juntamente com a mensagem "Starting a long task...".
Verificando Tarefas em Background
Para ver uma lista de todas as tarefas em execução em background, use o comando jobs:
jobs
A saída deve ser semelhante a esta:
[1]- Running ./long_running_task.sh &
[2]+ Running ./long_running_task.sh &
Isso mostra:
- Números de tarefa entre colchetes
[1]e[2] - O status de cada tarefa (
Running- Em execução) - O comando que foi executado
- O símbolo
+indica a tarefa "atual" (a mais recentemente iniciada ou usada) - O símbolo
-indica a tarefa que se tornaria atual se a tarefa atual fosse concluída
Vamos iniciar uma terceira tarefa em background:
./long_running_task.sh &
Verifique a lista de tarefas novamente:
jobs
Você deve agora ver três tarefas em execução na lista.
Trazendo Tarefas para o Foreground
Nesta etapa, você aprenderá como trazer tarefas em background para o foreground usando o comando fg.
Usando o Comando fg
O comando fg traz uma tarefa em background para o foreground, tornando-a o processo ativo em seu terminal. Quando uma tarefa está em foreground, ela pode receber entrada do teclado, e sua saída é exibida diretamente no terminal.
Para trazer a tarefa em background mais recente (marcada com + na saída do jobs) para o foreground, simplesmente digite:
fg
Você deve ver o comando sendo executado em foreground, e seu terminal será ocupado até que o comando seja concluído. A saída será semelhante a esta:
./long_running_task.sh
E se a tarefa ainda estiver em execução, você terá que esperar que ela seja concluída. Quando terminar, você verá:
Task completed.
Se você precisar interromper um processo em foreground antes que ele seja concluído, pressione Ctrl+C.
Vamos iniciar outra tarefa em background:
./long_running_task.sh &
Agora verifique a lista de tarefas:
jobs
Trazendo uma Tarefa Específica para o Foreground
Nesta etapa, você aprenderá como trazer uma tarefa em background específica para o foreground usando seu número de tarefa.
Usando fg com Números de Tarefa
Quando você tem múltiplas tarefas em background, você pode trazer uma tarefa específica para o foreground referenciando seu número de tarefa com o comando fg.
Primeiro, vamos garantir que temos múltiplas tarefas em execução. Inicie algumas novas tarefas em background:
./long_running_task.sh &
./long_running_task.sh &
Verifique a lista de tarefas e seus números:
jobs
Para trazer uma tarefa específica para o foreground, use o formato fg %jobnumber. Por exemplo, para trazer a tarefa número 1 para o foreground:
fg %1
A saída mostrará o comando sendo executado no foreground:
./long_running_task.sh
Espere a tarefa ser concluída ou pressione Ctrl+C para interrompê-la.
Agora tente trazer outra tarefa para o foreground. Por exemplo, se você tiver uma tarefa com o número 2:
fg %2
Esta técnica é útil quando você precisa alternar entre múltiplas tarefas, dando atenção a um processo específico conforme necessário.
Resumo
Neste laboratório, você aprendeu habilidades essenciais para gerenciar processos em um ambiente Linux:
Criando e executando tarefas em background: Você criou um script que simula uma operação de longa duração e aprendeu como executá-lo em background usando o símbolo
&.Gerenciando múltiplas tarefas em background: Você aprendeu como iniciar múltiplas tarefas em background e verificar seu status usando o comando
jobs.Trazendo tarefas para o foreground: Você descobriu como usar o comando
fgpara trazer tarefas em background para o foreground, seja a tarefa mais recente ou uma tarefa específica referenciando seu número de tarefa.
Essas técnicas de controle de tarefas são fundamentais para a multitarefa eficiente no Linux. Elas permitem que você:
- Execute processos demorados sem ocupar seu terminal
- Monitore múltiplas operações simultaneamente
- Alterne entre tarefas conforme necessário
- Gerencie seu fluxo de trabalho de forma mais eficaz
À medida que você continua trabalhando com sistemas Linux, esses comandos se tornarão ferramentas valiosas em suas operações diárias, especialmente ao trabalhar com servidores, executar scripts ou gerenciar múltiplos processos.



