Foregrounding de Tarefas no Linux

LinuxBeginner
Pratique Agora

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:

  1. 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 &.

  2. Gerenciando múltiplas tarefas em background: Você aprendeu como iniciar múltiplas tarefas em background e verificar seu status usando o comando jobs.

  3. Trazendo tarefas para o foreground: Você descobriu como usar o comando fg para 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.