Como mostrar os cinco principais processos de consumo de CPU com o ps?
101
Por que usar ps
quando você pode fazer isso facilmente com o top
comando?
Se você deve usar ps
, tente o seguinte:
ps aux | sort -nrk 3,3 | head -n 5
Se você deseja algo realmente "top", com atualizações constantes, use watch
watch "ps aux | sort -nrk 3,3 | head -n 5"
ps aux | sort -nrk 3,3 | head -n 5
top
realmente funciona.top
lê a lista de processos e exibir o resultado em sua própria sem tubulação para qualquer outro processoA resposta correta é :
Portanto, você pode especificar colunas sem interferir na classificação.
Ex:
Nota para o MAC OS X : no Mac OS X,
ps
não reconhece--sort
, mas oferece-r
a classificação pelo uso atual da CPU. Assim, no Mac OS X, você pode usar:fonte
bash
(x2, ouhead
bem)ps
...sort
, o segundo mostra como especificar colunas sem interferir na classificação. Ao explicar alguma coisa ... é sempre melhor ser conciso e explicar uma coisa de cada vez.Dependendo das suas necessidades, você pode achar isso um pouco mais legível:
saída de amostra:
(os campos são% CPU, PID, USER, COMMAND)
fonte
Eu não acho
ps
que é o que você está procurando. Você já olhou para a saídatop
?Se você possui o GNU-Top, tente usar o modo batch para cuspir uma lista de processos classificada pelo uso da CPU e usando head / tail para obter as 5 principais linhas (os 8 primeiros são cabeçalhos):
O topo do BSD parece se comportar de maneira diferente e não possui um modo não interativo; portanto, use uma das outras
ps
soluções baseadas.fonte
top -o cpu -n 5
uma maneira de conseguir a mesma coisa. Alguém sabe? O meutop
é diferente do seutop
.-o
e-n
define o número de vezes que atualiza a exibição antes de sair.top
parece não ter um modo em lote, o que é bastante limitador. Deve haver alguma maneira de canalizartop
para outros comandos. Eu vou fazer uma pesquisa.top
funcionou como descrito nesta tarde. Felicidades.O liner mais rápido que encontrei para isso (nota 6 porque o cabeçalho se soma):
fonte
Observe que as versões atuais do ps têm a capacidade de classificação dentro delas, com base nos códigos de campo (fornecidos na página man do ps). O código de campo para uso do processador é "c". Você pode usar
--sort c
no final de um comando ps, por exemplops aux --sort c
Isso colocará o processo usando o maior número de CPUs na parte inferior da lista. Ordem inversa da lista adicionando um sinal de menos ao código do campo usado para classificar, por exemplo,
ps aux --sort -c
fonte
Para adicionar um ponto a outras respostas valiosas, prefiro:
Também imprime o cabeçalho, o que é legal.
Aqui
k
é idêntico--sort
ec
especifica o campo de uso da CPU (alias%cpu
) para classificação, enquanto-
é para classificação inversa.Você pode adicionar mais especificadores separados por
,
, outros especificadores de possíveis são:%mem
,args
,bsdstart
,pid
,gid
,uid
... onde pode encontrar lista completa de especificadores de formato padrão seção da página homem. Por exemplo:imprimiria 10 processos com o ID de grupo mais alto, classificado internamente pelo uso de memória.
fonte
A ferramenta de linha de comando
ps
tem sua própria opção de classificação, então eu prefiro:Você pode adicionar as colunas que deseja. Veja quais outras opções estão disponíveis na
ps
página de manual.fonte
top
no Mac OS X tem uma opção de modo de log na forma detop -l numberOfSamples
(que parece ser equivalente ao modo de lote do GNUtop
). É necessário, no entanto, ter pelo menos duas amostras porque "a primeira amostra exibida terá uma% de CPU inválida exibida para cada processo, pois é calculada usando o delta entre amostras" (man 1 top
).fonte
top
exibirá o que está usando sua CPU. Se você o tiver instalado,htop
permite um controle mais refinado, incluindo a filtragem por - no seu caso - da CPU.fonte
Acredito que a maneira mais simples de ver os 5 principais processos de consumo da CPU é,
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5
Para ver os 5 principais processos de consumo de memória ,
ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5
Onde,
-e
: Este sinalizador é usado para selecionar todos os processos-o
: Este sinalizador é usado para formatar como definido pelo usuário.pid
: Este argumento usado para mostrar pidcomm
: Este argumento usado para mostrar apenas o nome do comando. Para obter o comando completoargs
, usecmd
oucommand
%cpu
: Este argumento mostra a porcentagem de utilização da CPU do processo no formato "##. #". Aquipcpu
também pode ser usado.%mem
: Este argumento mostra a proporção do tamanho do conjunto residente do processo para a memória física na máquina, expressa como uma porcentagem. Aquipmem
também pode ser usado.--sort
: Especifique a ordem de classificação. Após=
o-
sinal ser usado para classificar o valor mais alto no topo, onde a opção padrão+
é listar a ordem numérica crescente [ou seja, 0 a n].fonte
top -bn1 |sed -n '7,12'p
também funciona como um liner agradável.Embora eu prefira usar ps com o --sort = X -o X, Y, Z
usando ps, você pode obter diferentes estatísticas grep para um processo OU usuário e, em seguida, total OU avg com um pipe para awk.
fonte