Verifique a integridade e a disponibilidade de seus servidores Linux para obter desempenho ideal com a ferramenta de monitoramento Linux do Site24x7.
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
é 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.
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.
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.
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.
Porém, ao usar as três opções abaixo com o comando ps
, podemos obter muito mais:
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:
Fig. 3: A saída do comando ps auxNeste 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.
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.
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.
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.
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.
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.
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.
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.
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