Comando Kill: aprenda como eliminar um processo pela linha de comando no Linux

Quando um computador deixa de responder, geralmente é porque um processo está monopolizando os recursos do sistema. Uma solução fácil para esse problema é eliminar o processo que consome muitos recursos. Mas antes de fazer isso, precisamos entender o que ele é.

Um processo é uma instância de um programa em execução, juntamente com tudo o que ele precisa para o fazer. Uma parte dos recursos do sistema é alocada ao processo para que ele possa carregar o conteúdo do arquivo que lê - ou os dispositivos de entrada/saída, juntamente com tudo o mais - na memória alocada. Em seguida, ele usa os núcleos de CPU alocados para ser executado.

Mas alguns processos se comportam de maneira inesperada. Por exemplo, um programa pode encontrar um erro em seu código e começar a consumir memória em excesso. Da mesma forma, os processos podem consumir 100% dos núcleos da CPU. Quando isso acontece, o computador deixa de responder porque esse processo rogue está consumindo todos os recursos do sistema.

A eliminação desse processo libera recursos para que o sistema possa voltar ao estado normal. Para encerrar um processo, é necessário um identificador exclusivo que é alocado para cada um deles quando é iniciado. Isso é chamado de ID do processo, ou PID. Todos os recursos alocados para eles são referenciados com base nesse número, portanto, encontrar o PID é a primeira etapa para fazer uma eliminação e disponibilizar os recursos do sistema.

Neste artigo, vamos orientá-lo no processo de encontrar o PID de um determinado processo e, em seguida, encerrá-lo usando alguns comandos simples.

Top: o comando para avaliar o uso e a disponibilidade dos recursos do sistema

top é um comando popular para acessar a utilização de recursos do sistema. Ele gerará uma tabela que inclui uma lista em tempo real de todos os processos em execução, cada ID, a porcentagem de recursos que o processo está usando e muito mais. Você pode ver a interface do usuário do comando top na figura abaixo.

Interface do usuário do comando superior Fig. 1: Interface do usuário do comando superior

Por padrão, os processos são classificados com base na porcentagem de CPU que estão usando em ordem decrescente, de modo que o primeiro processo que você vê é o que consome mais CPU. Neste exemplo, podemos ver que o processo do Webkit está usando um pouco mais de 105%. Isso ocorre porque, quando a captura de tela foi feita, o navegador Safari estava em execução com algumas guias reproduzindo vídeos de vários formatos.

Além de "%CPU", o monitoramento da coluna "MEM" também é importante, pois permite que você saiba quanta memória ou RAM está sendo usada pelo processo.

"%CPU" e "MEM" são duas das colunas mais importantes a serem monitoradas nessa tabela.

Eliminando um processo

Agora que podemos identificar um processo que está consumindo mais CPU ou memória usando o comando top, vamos ver como podemos o eliminar.

Primeiro, podemos obter o ID do processo que queremos eliminar na primeira coluna da tabela mostrada na figura 1. Lembre-se de que a lista é atualizada continuamente - a cada três segundos para o Linux e a cada um segundo para o MacOS -, portanto, pode ser difícil identificar o processo e o PID nessa curta janela. Felizmente, há outro comando para isso.

O comando ps

Depois de identificarmos o processo que queremos eliminar, podemos usar o comando ps para obter o ID do processo correspondente. Se executarmos este comando em nosso terminal, não veremos muita coisa na saída. A captura de tela abaixo mostra que ele, em si, não fornece muitas informações.

saída do comando ps Fig. 2: saída do comando ps

Porém, ao usar as três opções abaixo com o comando ps, podemos obter muito mais:

  • A - Lista processos de todos os usuários
  • U - Lista também os nomes de usuário
  • X - Incluir processos sem um terminal anexado ou de controle

O uso dessas três opções listará todos os processos em execução no sistema em um determinado momento. Você verá algo parecido com a figura abaixo:

A saída do comando ps aux Fig. 3: A saída do comando ps aux

Neste exemplo, usamos a opção extra "| head" (man7.org/linux/man-pages/man1/head.1.html) para limitar a lista de saída a 10 itens, mas isso não é necessário. Na saída, podemos ver todos os processos sendo listados.

Obtendo a ID do processo com o comando "ps"

Agora, vamos supor que temos uma instância do Sublime Text em execução que queremos eliminar. Para isso, primeiro precisamos obter o PID do Sublime Text. Usaremos o comando ps aux para isso e filtraremos a lista para mostrar apenas as instâncias do Sublime Text.

Faremos a filtragem usando outro comando popular chamado grep. Podemos encadear os comandos usando o "pipe", que é representado pelo símbolo |. O comando completo é mostrado abaixo:

ps aux | grep subl

subl é o comando usado para executar uma instância do Sublime Text. Portanto, quando executarmos esse comando, o ps mostrará apenas todas as instâncias do Sublime Text em execução, semelhante à captura de tela mostrada na figura 4 abaixo.

ps aux | saída do comando grep subl Fig. 4: ps aux | saída do comando grep subl

Como podemos ver na saída, há três instâncias do Sublime Text em execução no momento. O primeiro item da lista é o próprio comando ps, portanto, vamos ignorá-lo. A segunda coluna é o PID dos processos.

Agora podemos finalmente eliminar os processos para liberar recursos do sistema.

O comando kill

Como era de se esperar, temos outro comando para eliminar processos, e o comando é bem simples: kill. Passamos o PID do processo que queremos eliminar para o comando kill. Na figura 4 acima, temos três processos a serem eliminados com os PIDs 28947, 28946 e 28940. Portanto, o comando seria:

kill 28947 28946 28940

Podemos passar vários PIDs para esse simples comando kill, para que não tenhamos que matar cada processo individualmente. No entanto, é importante observar que os PIDs aqui são separados por espaço. Isso eliminará todas as três instâncias em execução do Sublime Text, o que pode ser verificado com a execução do comando ps aux | grep subl novamente.

Vários sinais do comando kill

Isso pode não ser sempre preocupante, mas, às vezes, encerrar um processo sem informar a todos os sistemas posteriores fará com que mais processos deixem de responder. Para evitar essas situações, o Linux oferece um recurso chamado "sinais".

Os sinais são usados para sinalizar a ocorrência de um evento para outros processos. O comando kill fornece sete sinais, que são mostrados na figura 5 abaixo.

Sinais comuns disponíveis para comando kill Fig. 5: Sinais comuns disponíveis para comando kill

Como você pode ver na captura de tela, esses são os sinais mais comumente usados. Ao eliminar um processo, podemos passar o identificador numérico do sinal como uma opção para o comando kill. Por exemplo, se eu quiser passar o sinal KILL para o comando, eu alteraria meu comando para o seguinte:

kill -9 28947 28946 28940

A saída do comando não é diferente do comando kill sem opções. A única diferença é que o sinal também é tratado pelo sistema. Além dessas opções comuns, há outras opções do comando kill que você pode experimentar.

Permissões elevadas para eliminar processos

Como você deve ter observado, não usamos o comando sudo ao eliminar instâncias do Sublime Text. Isso ocorre porque o Sublime Text era um processo de usuário que iniciamos. Mas haverá casos em que desejaremos eliminar processos iniciados por outros usuários ou pelo sistema.

Seu processo de banco de dados não responde. Nesses casos, precisamos de permissões elevadas para eliminar esses processos. A única diferença no comando é adicionar "sudo" antes do próprio comando, conforme mostrado abaixo:

sudo kill -9 28947 28946 28940

A senha de superusuário é necessária para que o comando seja executado, portanto, certifique-se de tê-la em mãos. A menos que você esteja na lista de "sudoers", não será possível executar o comando e eliminar esses processos sem a senha.

Mas eliminar processos como superusuário requer cuidado. A eliminação de um processo do sistema pode causar instabilidade, exigindo uma reinicialização que pode causar tempo de inatividade. Além disso, eliminar os processos de outros usuários pode causar o mau funcionamento de suas aplicações.

Conclusão

Quando um processo está consumindo recursos excessivos do sistema, eliminá-lo para que você possa voltar ao trabalho pode ser a melhor opção.

Você pode simplificar o processo de eliminação identificando aqueles que consomem muitos recursos com o comando top e localizando seus PIDs usando o comando ps. Depois de obter o PID, você pode facilmente eliminar processos usando o comando kill ou sinalizar outros processos para lidar com esse evento, se necessário. Entretanto, conforme observado acima, é importante ter cuidado ao eliminar processos do sistema ou iniciados por outros usuários.

Was this article helpful?
Monitore seu ambiente Linux

Verifique a integridade e a disponibilidade de seus servidores Linux para obter desempenho ideal com a ferramenta de monitoramento Linux do Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us