Header Ads

Como matar processos do terminal Linux

Matar um processo às vezes é a única maneira de se livrar dele. Apesar do nome severo, “matar” um processo significa apenas “forçá-lo a sair”. Veja como fazer isso a partir da linha de comando do Linux ou do macOS.

O que é um processo?

A execução de programas como seu navegador da web, processos em segundo plano associados ao ambiente de área de trabalho e serviços do sistema Linux são todos processos.

Você pode agrupar processos em dois grupos: [ ul]

  • Processos em primeiro plano são aqueles que foram iniciados ou iniciados por um usuário. Eles podem estar em uma janela de terminal ou podem ser um aplicativo gráfico.
  • Processos em segundo plano são todos os processos que são iniciados automaticamente e não têm interação com os usuários. Eles não esperam informações dos usuários nem apresentam resultados ou saem para eles. Os processos em segundo plano são coisas como serviços e daemons.

    Se os processos em primeiro plano são a fachada da equipe de teatro e dos atores, os processos em segundo plano são a equipe de bastidores dos bastidores. >

    Quando os processos se comportam mal ou apresentam mau funcionamento, eles podem consumir muito tempo da CPU, consumir sua RAM ou entrar em um circuito computacional restrito e deixar de responder. Aplicações gráficas podem se recusar a responder a cliques do mouse. Os aplicativos de terminal talvez nunca retornem ao prompt de comando.

    A resposta humana

    "Matar" um processo significa apenas "forçar o processo a sair". Isso pode ser necessário se o processo está se recusando a responder.

    O Linux fornece os comandos kill, pkill e killall para permitir que você faça exatamente isso. Estes comandos podem ser usados ​​com qualquer tipo de processo, gráfico ou linha de comando, primeiro plano ou plano de fundo.

    O comando kill

    Para usar kill, você deve conhecer o ID do processo (PID). do processo que você deseja encerrar. O comando ps pode ser usado para encontrar o PID de um processo.

    Para fazer uma busca ps em todos os processos, use a opção -e (todos os processos). É aconselhável pipilar a saída por meio de menos, haverá um pouco disso. Digite ps, um espaço, -e, um espaço, | (um caractere de pipe), outro espaço e digite menos. Pressione Enter para executar o comando.

     ps -e | less 

    Isso fornecerá uma lista de processos semelhante à captura de tela abaixo. Você pode procurar em menos usando a tecla / e você pode pesquisar para trás usando o? key.

    Para se concentrar no processo em que você está interessado, canalize a saída de ps para o grep e especifique o nome - ou parte do nome - do processo .

     ps -e | grep shutter 

    IMAGEM_3

    Depois de ter localizado o PID do processo que deseja encerrar, passe-o ao comando kill como um parâmetro. Para finalizar o processo do obturador identificado pelo comando anterior, use este comando:

     kill 2099 

    IMAGEM_4

    O comando kill é um assassino silencioso— ele não fornece nenhum feedback se tiver sucesso.

    O comando pkill

    O comando pkill permite que você mate um processo - ou processe - pelo nome. Você não precisa identificar o processo pelo PID. Para usar pkill, você fornece um termo de pesquisa que o pkill usa para verificar a lista de processos em execução. Os processos correspondentes são finalizados. Então, você precisa ter certeza de que o termo de pesquisa está escrito corretamente.

    Como uma rede de segurança, você pode usar o comando pgrep antes de usar o comando pkill. O comando pgrep também aceita um termo de pesquisa. Ele listará o PID de cada processo que corresponde ao termo de pesquisa. Isso é seguro porque o pgrep não emitirá nenhum sinal de kill para os processos, e se você digitar incorretamente o termo de pesquisa, não irá matar outro processo por engano. Você pode ter certeza de que o termo de pesquisa foi pensado corretamente antes de passá-lo para o pkill. Tanto o pkill quanto o pgrep tratam o termo de pesquisa da mesma maneira. O tratamento deles é tão semelhante que eles compartilham a mesma página do manual.

    Vamos supor que haja um processo com "subq" em seu nome. Nós vamos usar o ps -u dave | comando grep para dar uma olhada atrás da cortina. Você pode ver que "subq" corresponderá a esse processo e esse processo sozinho. Isso foi apenas para que você possa ver o nome completo do processo.

     ps -u dave | grep subq 

    Suponhamos que nosso usuário não tenha feito isso; Tudo o que eles sabem é que o nome do processo contém a subseqüência "subq". Eles usam o pgrep para verificar se há apenas uma correspondência para o termo de pesquisa. Eles então usam esse termo de pesquisa com pkill.

     pgrep subq 

     pkill subq 

    IMAGEM_6

    Você pode usar pkill para matar vários processos de uma só vez. Aqui, o usuário executa o pgrep para verificar quantos processos o Chrome lançou. Eles usam pkill para matar todos eles. Eles então verificam com pgrep que todos foram removidos.

     pgrep chrome 

     pkill chrome 

     pgrep chrome 

    Se vários processos com o mesmo nome estiverem sendo executados, mas você não quiser matar todos eles, você pode usar o pgrep com a opção -f (linha de comando) para identificar qual processo é qual. Um exemplo simples seria dois processos de ping. Você quer matar um deles, mas não o outro. Você pode usar suas linhas de comando para distinguir entre elas. Observe o uso de aspas para quebrar o parâmetro da linha de comando.

     pgrep -f "ping 192.168.4.22" 

     pkill -f "ping 192.168.4.22 "

    O comando killall

    Aviso: Nos sistemas operacionais Solaris e OpenIndiana, o comando killall eliminará todos os processos que pertencem a você. Se são root ou se você emitiu sudo killall você irá reiniciar o seu computador! Durante a pesquisa para este artigo, esse comportamento foi confirmado com a versão mais recente do OpenIndiana Hipster 2018.10.

    O comando killall opera de maneira semelhante ao comando pkill, mas com uma diferença específica. Em vez de passar um termo de pesquisa para o comando, você deve fornecer o nome exato do processo.

    Você não pode fornecer uma correspondência parcial a um nome de processo; você deve fornecer todo o nome do processo, como mostrado:

     killall shutt 

     killall shutter 

    A opção -y (mais jovem que) permite que você mate processos que estão em execução há menos de um período especificado. O período é dado em números seguidos por uma dessas unidades:

    • s (segundos)
    • m (minutos)
    • h (horas)
    • d (dias)
    • w (semanas)
    • M (meses, nota, maiúscula “M”)
    • y (anos)

    Para eliminar um processo chamado ana que acabou de ser lançado e deixar qualquer instância antiga de ana em execução, você poderia usar os seguintes parâmetros com killall se reagisse em dois minutos:

     killall -y 2m ana 

    A opção -o (mais antiga que) permite que você mate processos que estão sendo executados por mais de um período especificado. Este comando irá matar todas as conexões ssh que estão sendo executadas por mais de um dia:

     killall -o 1d sshd 

    Não Seja Muito Tragrador Feliz

    Esses comandos permitirão que você identifique e finalize processos errados com precisão e segurança corretamente.

    Sempre seja cauteloso. Primeiro, verifique se o processo que você está prestes a matar é realmente o que você deseja. Em segundo lugar, verifique com cuidado - tenha cuidado e assegure-se de que o processo desejado seja o que você deseja encerrar. Prossiga com o término do processo quando estiver satisfeito.

    Via: How to Geek

  • Nenhum comentário