Gerenciamento de Tarefas em Segundo Plano

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar tarefas em segundo plano (background jobs) no Linux usando vários comandos. Você descobrirá como executar processos em segundo plano, monitorar seu status e controlá-los. Este conhecimento é crucial para a multitarefa eficiente em um ambiente Linux, permitindo que você execute múltiplas tarefas simultaneamente sem ocupar seu terminal.

Conquistas

Ao final deste laboratório, você será capaz de:

  • Executar comandos em segundo plano usando o operador &
  • Listar e monitorar tarefas em segundo plano usando o comando jobs
  • Trazer tarefas em segundo plano para o primeiro plano usando o comando fg
  • Parar tarefas em segundo plano usando o comando kill
  • Compreender a natureza específica do terminal das tarefas em segundo plano

Executando um Comando em Segundo Plano

Vamos começar executando um comando simples em segundo plano.

  1. Abra seu terminal. Você deve estar no diretório /home/labex/project. Caso contrário, você pode mudar para este diretório digitando:

    cd /home/labex/project
  2. Usaremos o comando sleep para simular um processo de longa duração. Execute o seguinte comando:

    sleep 600 &

    O comando sleep pausa por um número especificado de segundos (neste caso, 600 segundos ou 10 minutos). O & no final diz ao Linux para executar este comando em segundo plano.

  3. Após executar este comando, você verá uma saída semelhante a esta:

    [1] 1234

    Esta saída mostra duas informações importantes:

    • [1] é o número do job (tarefa). Isso é usado para se referir a esta tarefa específica em segundo plano.
    • 1234 é o ID do processo (PID). Este é um identificador único para o processo em execução.
  4. Você notará que você recebe imediatamente o seu prompt de comando de volta. Isso ocorre porque o processo está sendo executado em segundo plano, permitindo que você continue usando seu terminal.

  5. Agora, vamos verificar o status da nossa tarefa em segundo plano:

    jobs

    Este comando lista todas as tarefas em segundo plano atuais. Você deve ver uma saída como esta:

    [1]+  Running                 sleep 600 &

    Isso informa que a tarefa número 1 está em execução, e é o comando sleep 600 que acabamos de iniciar.

  6. Nota Importante: As tarefas em segundo plano são específicas da sessão do terminal em que foram iniciadas. Se você abrir uma nova janela ou aba do terminal, executar jobs lá não mostrará as tarefas em segundo plano do seu terminal original. Este é um conceito chave para entender como as tarefas em segundo plano funcionam no Linux.

Executando Múltiplas Tarefas em Segundo Plano

Agora que executamos uma tarefa em segundo plano, vamos tentar executar várias tarefas simultaneamente. Usaremos uma mistura de comandos diferentes para demonstrar a versatilidade das tarefas em segundo plano.

  1. Vamos iniciar mais algumas tarefas em segundo plano. Digite estes comandos um após o outro:

    ping -c 100 google.com > ping_results.txt &
    find /home -name "*.log" > log_files.txt &
    sleep 1200 &

    Cada um desses comandos iniciará uma nova tarefa em segundo plano. Você verá um número de tarefa e PID para cada um.

  2. Agora, vamos verificar o status de todas as nossas tarefas em segundo plano:

    jobs

    Você deve ver uma saída listando todas as quatro tarefas (incluindo a do Passo 1):

    [1]   Running                 sleep 600 &
    [2]   Running                 ping -c 100 google.com > ping_results.txt &
    [3]-  Running                 find /home -name "*.log" > log_files.txt &
    [4]+  Running                 sleep 1200 &

    O + ao lado da tarefa 4 indica que esta é a tarefa em segundo plano iniciada mais recentemente. O - ao lado da tarefa 3 indica que esta se tornaria a tarefa atual se a tarefa 4 terminasse.

  3. Observe como você pode iniciar várias tarefas em segundo plano rapidamente, e seu terminal permanece responsivo para outros comandos.

Trazendo uma Tarefa em Segundo Plano para o Primeiro Plano

Às vezes, você pode querer trazer uma tarefa em segundo plano para o primeiro plano, seja para interagir com ela ou para ver sua saída. Vamos aprender como fazer isso.

  1. Primeiro, liste suas tarefas atuais:

    jobs

    Isso atualiza sua visão do que está sendo executado atualmente em segundo plano.

  2. Vamos trazer uma das tarefas de longa duração para o primeiro plano. Escolha um número de tarefa da lista (digamos que seja o número 3, mas use qualquer número que corresponda a uma tarefa que ainda esteja em execução em sua lista). Para trazê-la para o primeiro plano, use o comando fg seguido pelo número da tarefa:

    fg %3

    O %3 se refere ao número da tarefa. O símbolo % informa ao shell que você está se referindo a um número de tarefa, não a um ID de processo.

  3. Após executar este comando, você verá o comando sendo executado no primeiro plano, e seu terminal ficará "preso" até que ele seja concluído ou você o interrompa.

  4. Para interromper a tarefa e recuperar o controle do seu terminal, pressione Ctrl+C. Isso envia um sinal de interrupção para o processo atual em primeiro plano.

  5. Vamos verificar nossas tarefas novamente:

    jobs

    Você deve ver que a tarefa que você trouxe para o primeiro plano não está mais listada porque a interrompemos.

Parando uma Tarefa em Segundo Plano

Agora, vamos aprender como parar uma tarefa em segundo plano sem trazê-la para o primeiro plano.

  1. Primeiro, liste suas tarefas atuais:

    jobs

    Isso mostra quais tarefas ainda estão em execução.

  2. Vamos parar uma das tarefas em segundo plano restantes. Escolha um número de tarefa da lista (digamos que seja o número 2, mas use qualquer número que corresponda a uma tarefa que ainda esteja em execução em sua lista). Para pará-la, usamos o comando kill seguido pelo número da tarefa:

    kill %2

    O %2 se refere ao número da tarefa que você escolheu. Novamente, o símbolo % indica que estamos nos referindo a um número de tarefa.

  3. O comando kill envia um sinal de terminação para a tarefa especificada. Por padrão, ele envia um sinal que permite que o processo seja encerrado de forma graciosa.

  4. Verifique as tarefas novamente:

    jobs

    Você deve ver que a tarefa que você interrompeu não está mais listada. Isso confirma que ela foi terminada com sucesso.

Usando Tarefas em Segundo Plano com Outros Comandos

Agora que praticamos com vários comandos, vamos tentar usar tarefas em segundo plano com outro comando prático.

  1. Usaremos o comando tar para criar um arquivo compactado do seu diretório home em segundo plano:

    tar -czf home_backup.tar.gz /home/labex &

    Este comando cria um arquivo tar compactado do seu diretório home.

  2. Você verá um número de tarefa e PID, assim como com nossos comandos anteriores.

  3. Verifique o status da tarefa:

    jobs

    Você deve ver o comando tar listado como uma tarefa em execução.

  4. Enquanto estiver em execução, você pode continuar a usar seu terminal para outras tarefas. Este é o poder das tarefas em segundo plano!

  5. Depois de um tempo, verifique se o comando foi concluído:

    jobs

    Se ele não estiver mais listado, foi finalizado.

  6. Agora, vamos verificar se o arquivo foi criado:

    ls -l home_backup.tar.gz

    Isso mostrará os detalhes do arquivo de arquivo se ele foi criado com sucesso.

Resumo

Neste laboratório, você aprendeu habilidades essenciais para gerenciar tarefas em segundo plano no Linux:

  1. Executar comandos em segundo plano usando o operador &
  2. Listar e monitorar tarefas em segundo plano com o comando jobs
  3. Trazer tarefas em segundo plano para o primeiro plano com fg
  4. Parar tarefas em segundo plano usando kill
  5. Aplicar esses conceitos a cenários práticos, como diagnósticos de rede, pesquisas de arquivos e criação de arquivos

Você também aprendeu um conceito importante: as tarefas em segundo plano são específicas para a sessão do terminal em que foram iniciadas. Isso significa que cada janela ou aba do terminal mantém seu próprio conjunto de tarefas em segundo plano.

Essas habilidades o ajudarão a realizar multitarefas de forma eficiente em um ambiente Linux, permitindo que você execute vários processos simultaneamente e os gerencie de forma eficaz. Lembre-se, as tarefas em segundo plano são particularmente úteis para tarefas de longa duração que não exigem interação constante, liberando seu terminal para outros trabalhos.