Finalizando Tarefas em Segundo Plano
Nesta etapa, você aprenderá diferentes maneiras de terminar tarefas em segundo plano quando elas não forem mais necessárias. A terminação adequada de tarefas é importante para liberar recursos do sistema e manter o desempenho do sistema.
Identificando Tarefas para Terminação
Primeiro, vamos verificar quais tarefas estão sendo executadas atualmente:
jobs
Você deve ver sua tarefa em segundo plano em execução:
[1] + running ~/project/background_task.sh
Se você quiser informações mais detalhadas, incluindo o ID do processo (PID), use:
jobs -l
Isso exibirá uma saída semelhante a:
[1] + 1456 running ~/project/background_task.sh
Observe o PID (o número após o número da tarefa), pois ele pode ser usado para terminar o processo.
Método 1: Terminando uma Tarefa Usando Seu Número de Tarefa
A maneira mais direta de terminar uma tarefa em segundo plano é usar o comando kill com o número da tarefa:
kill %1
Verifique se a tarefa foi terminada:
jobs
Você pode ver:
[1] + terminated ~/project/background_task.sh
Se a tarefa ainda estiver em execução (alguns processos podem exigir um sinal de terminação mais forte), você pode usar:
kill -9 %1
A flag -9 envia um sinal SIGKILL, que termina o processo à força sem permitir que ele faça a limpeza.
Método 2: Terminando uma Tarefa Usando Seu PID
Vamos iniciar outra instância do nosso script em segundo plano:
~/project/background_task.sh &
Você deve ver a saída mostrando o número da tarefa e o PID:
[1] 1567
Para terminar esta tarefa usando seu PID, use:
kill 1567
Substitua 1567 pelo PID real da sua tarefa.
Verifique se a tarefa foi terminada:
jobs
Método 3: Usando o Nome do Processo com killall
Vamos iniciar mais uma instância do nosso script:
~/project/background_task.sh &
Se você tiver várias instâncias do mesmo processo em execução, você pode terminá-las todas de uma vez usando o comando killall:
killall background_task.sh
Este comando termina todos os processos com o nome background_task.sh.
Verifique se nenhuma tarefa está em execução:
jobs
Não deve haver saída, indicando que todas as tarefas em segundo plano foram terminadas.
Entendendo os Sinais de Terminação
Ao usar o comando kill, você está enviando um sinal para o processo. Por padrão, kill envia o sinal SIGTERM (sinal 15), que solicita que o processo termine graciosamente. Se um processo não responder ao SIGTERM, você pode usar SIGKILL (sinal 9) para forçar a terminação:
kill -TERM %1 ## Same as kill %1
kill -KILL %1 ## Same as kill -9 %1
Outros sinais úteis incluem:
- SIGHUP (sinal 1): Frequentemente usado para recarregar arquivos de configuração
- SIGINT (sinal 2): O mesmo que pressionar Ctrl+C
- SIGSTOP (sinal 19): Suspende um processo (não pode ser capturado ou ignorado)
- SIGCONT (sinal 18): Continua um processo interrompido
Para uma demonstração final, vamos iniciar nossa tarefa em segundo plano novamente e, em seguida, terminá-la:
~/project/background_task.sh &
jobs
kill %1
jobs
Esta sequência inicia a tarefa, confirma que ela está em execução, termina-a e, em seguida, verifica se ela não está mais em execução.