Como matar processos do terminal Linux

Conteúdo

Terminal Linux com tema Ubuntu estilizado

As vezes, matar um procedimento é a única maneira de se livrar dele. Apesar do nome severo, “matar” un procedimiento simplemente significaobligarlo a abandonar”. A seguir, Mostramos como fazer isso na linha de comando do Linux ou macOS.

O que é um procedimento?

Executando programas como o seu navegador da web, processos em segundo plano associados ao seu ambiente de desktop e serviços de sistema Linux são todos processos.

Você pode agrupar os processos em dois grupos:

  • Processos de 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 de fundo são todos os processos que iniciam automaticamente e não têm nenhuma interação com os usuários. Eles não esperam entrada do usuário ou apresentam resultados ou resultados para eles. Processos em segundo plano são coisas como serviços e daemons.

Se os processos em primeiro plano forem a frente da equipe do teatro e os atores, los procesos de fondo son el equipo detrás del escenario “nos bastidores”.

Quando os processos se comportam mal ou funcionam mal, pode ocupar muito tempo de CPU, consumir sua RAM ou entrar em um ciclo computacional apertado e parar de responder. Os aplicativos gráficos podem se recusar a responder aos cliques do mouse. Aplicativos de terminal podem nunca retorná-lo ao prompt de comando.

A solução humana

Matarun procedimiento simplemente significaforzar el cierre del procedimiento”. Isso pode ser necessário se o procedimento se recusar a responder.

Linux fornece kill, pkill, e killall comandos para permitir que você faça exatamente isso. Esses comandos podem ser usados ​​com qualquer tipo de procedimento, gráfico ou linha de comando, em primeiro plano ou em segundo plano.

O comando matar

Usar kill, você deve saber o id do procedimento (PID) do procedimento que você deseja terminar. a ps O comando pode ser usado para encontrar o PID de um procedimento.

Ter ps pesquisar em todos os processos, use o -e (todos os processos) opção. Canalizando a saída por meio de less É aconselhável, haverá o suficiente. Escreve ps, um espaço, -e, um espaço, | (uma barra vertical), outro espaço e depois escreva less. Pressione Enter para executar o comando.

ps -e | menos

Isso lhe dará uma lista de processos equivalente à próxima imagem. Você pode pesquisar em less usando o / e você pode pesquisar de volta com o ? chave inglesa.

saída do ps em uma janela a menos

Para se concentrar no procedimento que lhe interessa, canalizar a saída de ps através de grep e especifique o nome, ou parte do nome, do procedimento.

ps -e | grep shutter

O comando ps canalizado através do grep para encontrar o processo do obturador

Depois de localizar o PID do procedimento que deseja encerrar, passe para kill comando como parâmetro. Para terminar o shutter procedimento identificado pelo comando acima, use este comando:

matar 2099

a kill O comando é um assassino silencioso; não dá nenhum feedback se foi bem sucedido.

O comando pkill

a pkill O comando permite que você mate um procedimento (os processos) pelo nome dele. Não é necessário identificar o procedimento por PID. Usar pkill você fornece uma definição de pesquisa que pkill usado para comparar com a lista de processos em execução. Os processos de emparelhamento terminam. Por isso, você deve ter certeza de que digitou o termo de pesquisa corretamente.

Como uma rede de segurança, Você pode usar pgrep comando antes de você usa o pkill comando. a pgrep O comando também aceita uma definição de pesquisa. Ele irá listar o PID de cada procedimento que corresponde ao termo de pesquisa. Isso é seguro porque pgrep não irá emitir nenhum sinal de interrupção para os processos, e se você errar a ortografia do termo de pesquisa, não vai deletar outro procedimento por engano. Você pode ter certeza de que considerou seu termo de pesquisa corretamente antes de prosseguir para pkill. Ambos pkill e pgrep trate o termo de pesquisa da mesma maneira. Seu tratamento é tão equivalente que compartilhe a mesma página de manual.

Supongamos que hay un procedimiento consubq” em seu nome. Nós vamos usar o ps -u dave | grep comando para espiar por trás da cortina. Pode ver isso “subqcoincidirá con ese procedimiento y solo con ese procedimiento. Isso foi só para você ver o nome completo do procedimento.

ps -u dave | grep subq

Vamos supor que nosso usuário não tem Fiz isso; todo lo que conocen es que el nombre del procedimiento contiene la subcadenasubq”. Eles usam pgrep para verificar se há apenas uma correspondência com o termo de pesquisa. Eles então usam esse termo de pesquisa com pkill.

pgrep subq
pkill subq

Você pode usar pkill para matar vários processos ao mesmo tempo. Aqui o usuário executa pgrep para verificar quantos processos o Chrome lançou. Eles usam pkill para matar todos eles. Mais tarde, eles verificam com pgrep que todos foram eliminados.

pgrep chrome
pkill chrome
pgrep chrome

Se vários processos com o mesmo nome estiverem em execução, mas você não quer deletar todos eles, você pode usar pgrep com ele -f (linha de comando) opção de identificar qual procedimento é qual. Um exemplo simples seria dois ping Processos. Você pretende matar um deles, mas não o outro. Você pode usar suas linhas de comando para distingui-los. 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"

pgrep pkill com a linha de comando ping

O comando Killall

Aviso: Nos sistemas operacionais Solaris e OpenIndiana, a killall o comando será matar todos os processos que pertencem a você. Se você é root ou se você emitiu sudo killall irá reiniciar o seu computador! Durante a pesquisa para este post, este comportamento foi confirmado com a última versão do OpenIndiana Hipster 2018.10.

a killall comando opera de forma semelhante al pkill comando, mas com uma diferença específica. Em vez de passar uma definição de pesquisa para o comando, você deve fornecer o nome exato do procedimento.

Você não pode fornecer uma correspondência parcial para um nome de procedimento; você deve fornecer o nome completo do procedimento, como se mostra:

killall shutt
obturador killall

a -y (menor que) permite que você elimine processos que estão em execução por menos do que um período especificado. O período é indicado em números seguidos por uma dessas unidades:

  • s (segundos)
  • m (minutos)
  • h (horas)
  • d (dias)
  • C (semanas)
  • M (meses, Nota, “M” letra maiúscula)
  • e (anos)

Para matar um procedimento chamado ana que acabou de ser lançado e deixa quaisquer instâncias anteriores de ana em execução, você pode usar os seguintes parâmetros com killall, se eu tivesse reagido em dois minutos:

killall -y 2m ana

killall com opção mais jovem que

a -o Opção (antes de) permite que você elimine processos que estão em execução por mais de um período especificado. Este comando vai matar todos ssh conexões que estão funcionando há mais de um dia:

killall -o 1d sshd

Não fique muito feliz

Estes comandos permitirão que você identifique e finalize processos errôneos com precisão e segurança corretamente.

Sempre seja cauteloso. Primeiro, certifique-se de que o procedimento que você está prestes a concluir é realmente o que você deseja. Em segundo lugar, dupla verificação: tenha cuidado e certifique-se de que o procedimento alvo é aquele que você deseja terminar. Prossiga para a conclusão do procedimento quando estiver satisfeito.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.