Respostas:
Por que usar psquando você pode fazer isso facilmente com o topcomando?
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
toprealmente funciona.
toplê a lista de processos e exibir o resultado em sua própria sem tubulação para qualquer outro processo
A resposta correta é :
ps --sort=-pcpu | head -n 6
Portanto, você pode especificar colunas sem interferir na classificação.
Ex:
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
Nota para o MAC OS X : no Mac OS X, psnão reconhece --sort, mas oferece -ra classificação pelo uso atual da CPU. Assim, no Mac OS X, você pode usar:
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
bash(x2, ou headbem) 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:
ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
saída de amostra:
1.3 4 root [ksoftirqd/0]
1.1 9 root [ksoftirqd/1]
1.0 17606 nobody /usr/sbin/gmetad
1.0 13 root [ksoftirqd/2]
0.3 17401 nobody /usr/sbin/gmond
(os campos são% CPU, PID, USER, COMMAND)
Eu não acho psque é o que você está procurando. Você já olhou para a saída top?
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):
top -b -n 1 | head -n 12 | tail -n 5
O topo do BSD parece se comportar de maneira diferente e não possui um modo não interativo; portanto, use uma das outras pssoluções baseadas.
top -o cpu -n 5uma maneira de conseguir a mesma coisa. Alguém sabe? O meu topé diferente do seu top.
-oe -ndefine o número de vezes que atualiza a exibição antes de sair.
topparece não ter um modo em lote, o que é bastante limitador. Deve haver alguma maneira de canalizar toppara outros comandos. Eu vou fazer uma pesquisa.
topfuncionou como descrito nesta tarde. Felicidades.
O liner mais rápido que encontrei para isso (nota 6 porque o cabeçalho se soma):
ps aux k-pcpu | head -6
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 cno 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
Para adicionar um ponto a outras respostas valiosas, prefiro:
ps auxk-c | head -6
Também imprime o cabeçalho, o que é legal.
Aqui ké idêntico --sorte cespecifica 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:
ps auxk -gid,-%mem | head -11
imprimiria 10 processos com o ID de grupo mais alto, classificado internamente pelo uso de memória.
A ferramenta de linha de comando pstem sua própria opção de classificação, então eu prefiro:
$ ps -eo pcpu,args --sort=-%cpu | head
Você pode adicionar as colunas que deseja. Veja quais outras opções estão disponíveis na pspágina de manual.
$ man ps
topno Mac OS X tem uma opção de modo de log na forma de top -l numberOfSamples(que parece ser equivalente ao modo de lote do GNU top). É 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).
# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
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 pid
comm: Este argumento usado para mostrar apenas o nome do comando. Para obter o comando completo args, use cmdoucommand
%cpu: Este argumento mostra a porcentagem de utilização da CPU do processo no formato "##. #". Aqui pcputambé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. Aqui pmemtambé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].