Como verificar o uso da memória por processo no Linux

Como verificar o uso da memória por processo no Linux

Hoje em dia, um computador pode executar muitos programas de uma só vez. A CPU não tem problema em lidar com todos esses programas porque as CPUs têm vários núcleos para lidar.

Cada um desses programas é executado como um ou mais processos. Todo processo aloca alguma quantidade de RAM ou memória para si mesma. É essencial para o processo funcionar corretamente. Se um processo não conseguir alocar RAM ou memória suficiente, o processo não poderá ser criado e o programa não poderá iniciar.

Portanto, uma das tarefas básicas que você realiza no seu computador é verificar quanta memória ou RAM (memória de acesso aleatório) Cada um dos processos está usando. Porque, carneiro ou memória do seu computador é limitado.

Imagine um caso, onde você deseja executar algum programa e ele falha porque você não tem memória suficiente. Pode ser que alguns dos processos estão usando muita memória que você não precisa agora. Você pode matar ou interromper esses processos para liberar RAM ou memória, para que você possa iniciar seus programas importantes.

Neste artigo, mostrarei como verificar o uso da memória de cada um dos processos em execução em sua máquina Linux. Estarei usando o Debian 9 Stretch para toda a demonstração neste artigo. Mas deve funcionar em qualquer distribuição moderna do Linux. Vamos começar.

Verificando o uso da memória usando o comando ps:

Você pode usar o ps comando para verificar o uso da memória de todos os processos no Linux. Há um problema com este procedimento. ps Não mostre a você quanta memória um processo usa no formato KB ou MB, mas mostrará quanta memória está sendo usada em porcentagem.

Você pode verificar o uso da memória (em porcentagem) de todo o processo em execução no seu sistema operacional Linux com o seguinte comando:

$ ps -o pid, usuário,%mem, comando ax | classificar -b -k3 -r

Como você pode ver, todos os processos com o uso da memória em porcentagem estão listados em ordem decrescente (os processos que usam a maior parte da memória são listados primeiro).

Verificando o uso da memória dos processos com o PMAP:

Você pode verificar a memória de um processo ou um conjunto de processos em formato legível por humanos (em kb ou kilobytes) com PMAP comando. Tudo que você precisa é o PID dos processos que você deseja verificar o uso da memória.

Digamos que você quer verificar quanta memória o processo com PID 917 está usando. Para fazer isso, corra PMAP do seguinte modo:

$ sudo pmap 917

Como você pode ver, a memória total usada pelo processo 917 é 516104 kb ou kilobytes. Você também pode ver quanta memória as bibliotecas e outros arquivos necessários para executar o processo com o PID 917 está usando também aqui.

Se você não se importa com a quantidade de memória que as bibliotecas ou outros arquivos dependentes estão usando, então execute PMAP do seguinte modo:

$ sudo PMAP 917 | Tail -N 1

Como você pode ver, apenas a memória total usada pelo processo com PID 917 é impressa na tela.

Se quiser, você pode filtrar ainda mais isso com Awk e obtenha apenas o tamanho em KB ou Kilobytes. Para fazer isso, corra PMAP do seguinte modo:

$ sudo PMAP 917 | Tail -N 1 | awk '/[0-9] k/print $ 2'

Como você pode ver, apenas o uso da memória em KB ou Kilobytes é impresso.

Agora você também pode listar quanta memória é usada por vários processos usando seus PIDs com PMAP do seguinte modo:

$ sudo PMAP 917 531 | Grep Total

OBSERVAÇÃO: Aqui 917 e 531 são IDs de processo ou PIDs. Você pode colocar tantos PIDs quanto quiser dessa maneira.

Usando o PMAP para listar o uso da memória de todos os processos em Kilobytes:

Nesta seção, mostrarei como escrever seu próprio script de shell para listar o uso da memória de todos os processos em execução no seu sistema operacional Linux em formato legível por humanos (Kilobytes ou KB).

Primeiro faça um novo arquivo Sysmon Em seu diretório de trabalho atual com o seguinte comando:

$ touch sysmon

Agora faça o arquivo executável com o seguinte comando:

$ chmod +x sysmon

Sysmon é o script de shell que exibirá todos os processos em execução PID, PROPRIETÁRIO, MEMÓRIA (em KB em ordem decrescente) e COMANDO. Vamos começar.

Abra o Sysmon script com seu editor de texto favorito, vou usar Kate.

Agora, o primeiro comando que vou correr me dará o PID, PROPRIETÁRIO e COMANDO de todos os processos de execução separados pelo cólon (:) símbolo e armazenam no Rawin variável. Em seguida, passe pela saída e imprimi -la na tela.

Como você pode ver, estou obtendo a saída correta.

Agora é hora de processar cada linha, armazenar as informações delimitadas do cólon em variáveis ​​separadas. Foi o que eu fiz na linha 7, 8 e 9.

Como você pode ver, eu posso imprimir PID, PROPRIETÁRIO e COMANDO No meu próprio formato agora.

Agora é hora de buscar o uso de memória de cada pid. A linha 10 faz exatamente isso.

Como você pode ver, tudo está funcionando perfeitamente. Agora posso imprimir o uso da memória de cada processo em Kilobytes (KB).

Agora tudo o que resta a fazer é formatar a saída para ficar bem. Eu prefiro formato de tabela. A linha 5 imprime o cabeçalho de cada coluna da tabela.

Finalmente, imprimi PID, PROPRIETÁRIO, MEMÓRIA (em KB) e COMANDO de cada processo em um formato tabular usando a linha 14.

Como você pode ver, está funcionando bem. Porém, há um pouco de problema, os processos não são classificados corretamente em ordem decrescente pelo uso da memória.

Para consertar isso, eu removi classificar -bnr -k3 da linha 3 e envolveu tudo em uma função de concha sysmon_main (). Então deixou o trabalho de classificar para o organizar comando.

O script final do shell se parece com o seguinte:

Como você pode ver, funciona muito bem.

Agora você pode movê -lo para algum lugar como /usr/bin e executá -lo como outros comandos da seguinte forma:

$ sudo mv -v sysmon /usr /bin

Executando Sysmon:

Obrigado por ler este artigo.