Terminar Processos no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como terminar processos no Linux usando os comandos kill, killall e pkill. Esses comandos são essenciais para gerenciar processos em execução e podem ser usados para parar aplicações que não respondem ou liberar recursos do sistema.

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

  • Usar o comando kill para terminar um processo específico
  • Usar o comando killall para terminar múltiplos processos por nome
  • Usar o comando pkill como alternativa ao killall
Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 83%. Recebeu uma taxa de avaliações positivas de 99% dos estudantes.

Entendendo IDs de Processos e Sinais

Antes de começarmos a terminar processos, é importante entender dois conceitos-chave: IDs de Processos (PIDs) e sinais.

  1. Abra um terminal em sua VM Ubuntu. Você deve estar no diretório /home/labex/project por padrão. Se não tiver certeza, você sempre pode verificar seu diretório atual digitando pwd e pressionando Enter.

  2. Vamos começar executando um processo simples em segundo plano. Digite o seguinte comando:

    sleep 1000 &

    Este comando inicia um processo que irá dormir por 1000 segundos e o executa em segundo plano. O & no final diz ao shell para executar o comando em segundo plano, permitindo que você continue usando o terminal.

  3. Para ver os processos em execução, use o comando ps:

    ps aux | grep sleep

    Este comando mostra todos os processos em execução (ps aux) e, em seguida, filtra a saída para mostrar apenas as linhas contendo "sleep" (grep sleep).

    Você deve ver uma saída semelhante a esta:

    Terminal mostrando o processo sleep

    O número na segunda coluna é o ID do Processo (PID). Usaremos isso para terminar o processo mais tarde.

  4. O Linux usa sinais para se comunicar com os processos. Os sinais mais comuns para terminar processos são:

    • SIGTERM (15): Termina o processo de forma graciosa. Este é o sinal padrão enviado pelo comando kill.
    • SIGKILL (9): Mata o processo à força. Isso deve ser usado como último recurso quando SIGTERM não funciona.

Agora que entendemos PIDs e sinais, estamos prontos para passar para o uso do comando kill.

Usando o Comando kill

O comando kill é usado para enviar um sinal a um processo específico, identificado por seu PID. Por padrão, ele envia o sinal SIGTERM, que solicita que o processo termine de forma graciosa.

  1. Vamos terminar o processo sleep que iniciamos anteriormente. Primeiro, encontre seu PID usando o comando ps:

    ps aux | grep sleep

    Anote o PID do processo sleep. Será um número na segunda coluna da saída.

  2. Agora, use o comando kill para terminar o processo:

    kill <PID>

    Substitua <PID> pelo ID do Processo real que você anotou. Por exemplo, se o PID for 1234, você digitará kill 1234.

  3. Verifique se o processo ainda está em execução:

    ps aux | grep sleep

    Você não deve mais ver o processo sleep na saída, exceto pelo próprio comando grep.

Se o processo ainda estiver em execução (o que é improvável para um comando sleep simples, mas possível para aplicações mais complexas), você pode usar um sinal mais forte:

kill -9 <PID>
Terminando o processo com o comando kill

Isso envia o sinal SIGKILL, que termina o processo à força. Tenha cuidado com o SIGKILL, pois ele não permite que o processo faça a limpeza, o que pode levar à perda de dados ou outros problemas em aplicações mais complexas.

Usando o Comando killall

O comando killall permite que você termine processos por nome, o que pode ser mais conveniente do que usar PIDs, especialmente quando você tem múltiplas instâncias do mesmo programa em execução.

  1. Inicie múltiplos processos sleep:

    sleep 2000 &
    sleep 2000 &
    sleep 2000 &

    Este comando inicia três processos sleep separados, cada um executando por 2000 segundos em segundo plano.

  2. Verifique se os processos estão em execução:

    ps aux | grep sleep

    Você deve ver três processos sleep listados.

  3. Agora, use o comando killall para terminar todos os processos sleep:

    sudo killall sleep

    Usamos sudo aqui porque killall pode precisar de privilégios elevados para terminar processos iniciados por outros usuários ou processos do sistema. Você pode ser solicitado a inserir sua senha.

  4. Verifique se os processos foram terminados:

    ps aux | grep sleep

    Você não deve mais ver nenhum processo sleep na saída, exceto pelo próprio comando grep.

Se você receber um erro "Operação não permitida", isso significa que você não tem as permissões necessárias para matar certos processos. Nesse caso, usar sudo como mostrado acima deve resolver o problema.

Usando o Comando pkill

O comando pkill é outra maneira de terminar processos por nome, semelhante ao killall. É particularmente útil quando você deseja terminar processos com base em correspondências parciais de nomes.

  1. Inicie mais alguns processos sleep:

    sleep 3000 &
    sleep 3000 &
    sleep 3000 &

    Isso inicia mais três processos sleep, cada um executando por 3000 segundos em segundo plano.

  2. Use o comando pkill para terminar esses processos:

    sudo pkill sleep

    Assim como com killall, usamos sudo para garantir que tenhamos as permissões necessárias para terminar todos os processos correspondentes.

  3. Verifique se os processos foram terminados:

    ps aux | grep sleep

    Você não deve ver nenhum processo sleep na saída, exceto pelo próprio comando grep.

A principal diferença entre pkill e killall é que pkill pode corresponder a um nome de processo parcial. Por exemplo, pkill fire mataria os processos firefox e firebird. Isso pode ser poderoso e perigoso, então sempre verifique duas vezes seus comandos pkill antes de executá-los.

Praticando com Aplicações Reais

Agora que você aprendeu como usar kill, killall e pkill, vamos praticar com uma aplicação real. Usaremos o Firefox como exemplo, você deve praticar esta etapa no ambiente de desktop.

Exemplo de terminação do processo Firefox
  1. Inicie o navegador web Firefox:

    firefox &

    Este comando inicia o Firefox em segundo plano. Você deve ver a janela do Firefox aberta em sua área de trabalho.

  2. Use o comando ps para encontrar o PID do Firefox:

    ps aux | grep firefox

    Anote o PID do processo principal do Firefox. Ele geralmente será o primeiro processo Firefox listado.

  3. Use o comando kill para terminar o Firefox:

    kill <PID>

    Substitua <PID> pelo ID do Processo real do Firefox que você anotou.

  4. Se o Firefox não fechar (o que é possível, pois algumas aplicações capturam o sinal SIGTERM), tente usar o sinal SIGKILL:

    kill -9 <PID>

    Lembre-se, SIGKILL deve ser usado como último recurso, pois não permite que a aplicação salve seu estado ou faça uma limpeza adequada.

  5. Alternativamente, você pode usar killall ou pkill:

    sudo killall firefox

    ou

    sudo pkill firefox

    Esses comandos terminarão todos os processos Firefox de uma vez, o que pode ser mais conveniente do que matar processos um por um.

Lembre-se, terminar aplicações à força pode levar à perda de dados, por isso é sempre melhor fechar as aplicações normalmente quando possível. Esses comandos devem ser usados quando uma aplicação não responde ou quando você precisa liberar rapidamente recursos do sistema.

Resumo

Parabéns! Você concluiu com sucesso este laboratório sobre como terminar processos no Linux. Você aprendeu como:

  1. Usar o comando kill para terminar um processo específico por seu PID
  2. Usar o comando killall para terminar múltiplos processos por nome
  3. Usar o comando pkill como alternativa ao killall
  4. Aplicar esses comandos tanto a processos simples em segundo plano quanto a aplicações reais

Lembre-se, embora esses comandos sejam ferramentas poderosas para gerenciar processos, use-os com cautela. Terminar processos críticos do sistema pode levar à instabilidade do sistema. Sempre verifique o processo que você está terminando antes de usar esses comandos.

À medida que você continua sua jornada no Linux, você descobrirá que essas habilidades de gerenciamento de processos são inestimáveis para manter um sistema funcionando sem problemas e solucionar problemas. Continue praticando esses comandos para se sentir mais confortável com o gerenciamento de processos no Linux!