Quero obter o uso da CPU e da memória de um único processo no Linux - conheço o PID. Felizmente, eu posso obtê-lo a cada segundo e gravá-lo em um CSV usando o comando 'watch'. Que comando posso usar para obter essas informações na linha de comando do Linux?
linux
shell
memory-management
cpu-usage
Supertux
fonte
fonte
Respostas:
(Você pode deixar o "cmd", mas isso pode ser útil na depuração).
Observe que isso fornece o uso médio da CPU do processo ao longo do tempo em que ele foi executado.
fonte
| tail -n +2
ps
). Este não é o verdadeiro uso da CPU just in time. Também pode ser muito diferente do quetop
mostra, por exemplo.ps -e -o pcpu,args
irá mostrar a média de CPU durante a vida útil do processo, o que obviamente não é o que você quer, se é um processo de longa duraçãoUma variante da resposta do caf :
top -p <pid>
Isso atualiza automaticamente o uso da CPU, por isso é bom para o monitoramento.
fonte
pgrep
:top -p $(pgrep process_name)
Você pode obter os resultados pelo nome do processo usando
a
-C
opção permite que você use o nome do processo sem saber que é pid.fonte
pid
só deve funcionar.ps -C chrome -o pid,%cpu,%mem,cmd
Use pidstat (do sysstat - Consulte o link ).
por exemplo, para monitorar esses dois IDs de processo (12345 e 11223) a cada 5 segundos, use
fonte
pidstat
que é um ótimo comando, e útil também para scripts!pidstat
também dá uma boa média. É uma pena não ter encontrado uma maneira mais elegante depidstat -u 1 10 | grep ^Average | sort -r -n -b -k 8,8
ps
comando (não deve usar):top
comando (deve usar):Use
top
para obter o uso da CPU em tempo real (intervalo curto atual):top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'
ecoará como:
78.6
-b
: Modo de lote-n 2
: Número de iterações, use2
porque: Quando você o executa pela primeira vez, ele não possui uma amostra anterior para comparar; portanto, esses valores iniciais são as porcentagens desde a inicialização.-d 0.2
: Tempo de atraso (em segundo, aqui estão 200ms)-p 6962
: Monitor-PIDstail -1
: a última linhaawk '{print $9}'
: a 9a coluna (o número de uso da CPU)fonte
Inicie um programa e monitore-o
Este formulário é útil se você deseja comparar facilmente um executável:
Agora, quando você pressiona Ctrl + C, ele sai do programa e para de monitorar. Saída de amostra:
Relacionado: /unix/554/how-to-monitor-cpu-memory-usage-of-a-singsing-process
Testado no Ubuntu 16.04.
fonte
Você pode usar
top -b
e exibir o pid desejado (com a-b
parte superior do sinalizador sendo executada no modo em lote) ou também usar o-p
sinalizador e especificar o pid sem usar o grep.fonte
Como comentado na resposta do caf acima, ps e, em alguns casos, pidstat fornecerão a média da vida útil da pCPU. Para obter resultados mais precisos, use top. Se você precisar executar o top assim que puder:
ou para processar apenas dados e cabeçalho:
sem cabeçalhos:
fonte
ou por processo
fonte
Para obter o uso de memória apenas de seu aplicativo (em oposição às bibliotecas compartilhadas que ele usa, você precisa usar a interface de smaps do Linux). Esta resposta explica bem .
fonte
onde a primeira coluna é o PID, o uso da CPU na segunda coluna e o uso da memória na terceira coluna.
fonte
PID - ID do processo
etime - Processo em execução / duração ao vivo
% de CPU - uso da CPU
% mem - uso de memória
cmd - Comando
Substitua processname pelo processo que você deseja rastrear, mysql nginx php-fpm etc ...
fonte
Todas as respostas aqui mostram apenas a porcentagem de memória para o PID.
Aqui está um exemplo de como obter o uso da memória rss em KB para todos os processos apache, substitua "grep apache" por "grep PID" se você quiser apenas assistir um PID específico:
Isso imprime:
Com% da CPU:
Resultado:
fonte
Para aqueles que lutaram por um tempo se perguntando por que a resposta selecionada não funciona:
Nenhum ESPAÇO entre
%cpu,
e%mem
.fonte
Esse é um bom truque para seguir um ou mais programas em tempo real, enquanto também assiste à saída de outras ferramentas:
watch "top -bn1 -p$(pidof foo),$(pidof bar); tool"
fonte
O comando a seguir obtém a média do uso da CPU e da memória a cada 40 segundos para um processo específico (pid)
Saída para o meu caso (duas primeiras linhas para uso da CPU, duas primeiras linhas para memória):
fonte
(Se você estiver no MacOS 10.10, tente a opção -c acumulativa da parte superior:
(Esta opção não está disponível em outro linux, tentei com o Scientific Linux el6 e RHEL6)
fonte
Acima, lista os principais processos que consomem CPU e memória
fonte
Com base na resposta do @ caf, isso funciona muito bem para mim.
Calcular a média para o PID fornecido:
measure.sh
Uso:
fonte
Uso de CPU e memória de um único processo no Linux ou você pode obter os 10 principais processos utilizados pela CPU usando o comando abaixo
ps -aux --sort -pcpu | cabeça -n 11
fonte