Comando superior - Como reduzir as colunas exibidas

17

Podemos obter uma coluna específica em um comando superior, por exemplo, estou interessado apenas na coluna utilização de memória e uso de CPU.

Como reduzo as colunas exibidas do comando superior para apenas as duas colunas acima?

Surya
fonte
3
Qual SO? Qual topvariante? Existem dezenas de implementações principais.
Stéphane Chazelas
Por favor, forneça seu SO e versão superior ( top -h).
Slm

Respostas:

19

NOTA: Supondo que você tenha esta versão do top(procps) . Você pode verificar com este comando:

$ top --version
    top: procps version 3.2.8
usage:  top -hv | -bcisSH -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

procps geralmente é a versão do topFedora / CentOS / RHEL e outras variantes.

Alterando colunas

Se você procurar na página de manual, topverá uma seção intitulada: "2b. SELECIONANDO e ORDENDO Colunas". Existem atalhos de teclado para alternar a visibilidade para os diferentes campos / colunas.

Por exemplo:

  f,o     . Fields/Columns: 'f' add or remove; 'o' change display order
  F or O  . Select sort field
  <,>     . Move sort field: '<' next col left; '>' next col right

Você pode usar a chave fenquanto estiver dentro toppara acessar uma tela secundária, onde poderá especificar quais colunas devem ser alternadas visíveis ou não:

Por exemplo:

Current Fields:  ANOPQRSTUVbcdefgjlmyzWHIKX  for window 3:Mem
Toggle fields via field letter, type any other key to return 

* A: PID        = Process Id                                      * W: S          = Process Status
* N: %MEM       = Memory usage (RES)                              * H: PR         = Priority
* O: VIRT       = Virtual Image (kb)                              * I: NI         = Nice value
* P: SWAP       = Swapped size (kb)                               * K: %CPU       = CPU usage
* Q: RES        = Resident size (kb)                              * X: COMMAND    = Command name/line
* R: CODE       = Code size (kb)
...

Há mais, estas são apenas uma amostra. Quando terminar de alternar as colunas da maneira que desejar, use o Escpara sair da tela de seleção.

Salvando configuração

Você pode usar o Shift+ Wpara salvar suas alterações, para que sejam os padrões:

  W         Write configuration file

O arquivo é armazenado aqui,, $HOME/.toprce fica assim:

$ more .toprc 
RCfile for "top with windows"       # shameless braggin'
Id:a, Mode_altscr=0, Mode_irixps=1, Delay_time=1.000, Curwin=2
Def fieldscur=AEHIoqTWKNMBcdfgjpLrsuvyzX
    winflags=129016, sortindx=19, maxtasks=0
    summclr=2, msgsclr=5, headclr=7, taskclr=7
Job fieldscur=ABcefgjlrstuvyzMKNHIWOPQDX
    winflags=63416, sortindx=13, maxtasks=0
    summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem fieldscur=ANOPQRSTUVbcdefgjlmyzWHIKX
    winflags=65464, sortindx=13, maxtasks=0
    summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr fieldscur=ABDECGfhijlopqrstuvyzMKNWX
    winflags=65464, sortindx=12, maxtasks=0
    summclr=3, msgsclr=3, headclr=2, taskclr=7

Consulte a seção 5 da página do manual para obter mais detalhes, "5. ARQUIVOS".

slm
fonte
Existe uma maneira de alterar as colunas / campo através de um sinalizador de linha de comando? Isso seria realmente útil, por exemplo, para verificar o topo de máquinas diferentes e obter uma saída padronizada.
precisa saber é o seguinte
@ naught101 - se você tiver uma nova pergunta, faça-a no site principal. Comentários não são realmente feitos para isso.
slm
2

[Centos-6 | Ubuntu 12.10] Este cmd imprime os 4 principais processos classificados por USAGE CPU

top -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5

Resultado

%CPU      %MEM      COMMAND
7.7       0.2       top
0.0       0.3       init
0.0       0.0       kthreadd
0.0       0.0       migration/0

Nota: head -n 5 em vez de 4 porque também temos o nome da coluna

colunas $ 9, $ 10, $ 12 significa CPU, MEM, COMANDO. Use o comando 'top' para obter os números das colunas

Classificar por USO DE MEMÓRIA (seu 'top' deve suportar -m para executar isso)

# this work on my centos-6 machine, NOT work on my Ubuntu 12.10
top -m -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5
damphat
fonte
Qual versão do top é essa?
slm
Eu usei o centos-6.4. O comando top no Ubuntu não suporta -m para classificar meu uso de memória.
damphat
Interessante, estou no Fedora (14), estou recebendo a versão do procps do top. Eu verifiquei duas vezes e no CentOS 5 + 6 eles também estão usando os melhores recursos. Seu comando não funcionou no F14. Porém, ele funciona no CentOS 5 + 6. Apenas um FYI para quem se deparar com esta discussão!
slm
1

para visualizar no formato json e remover o cabeçalho também,

top -bn 1 | grep "^ " | awk '{ printf("%s%s%s\n","{CPU:"$9",","MEM:"$10",","CMD:"$12"}"); }' | head -n 6 | tail -n +2

saída como abaixo,

{CPU:6.4,MEM:0.3,CMD:gnome-terminal}
{CPU:6.4,MEM:1.9,CMD:chrome}
{CPU:0.0,MEM:0.0,CMD:init}
{CPU:0.0,MEM:0.0,CMD:kthreadd}
{CPU:0.0,MEM:0.0,CMD:ksoftirqd/0}
Som
fonte
Você grep | awk | head | tailpode coalescer em um único awk.
roaima 16/08
0

Configuração da linha de comando
Eu não queria afetar todo o meu usuário substituindo-o .toprc, então criei uma solução para ter uma configuração separada por caso de uso.
Você pode topusar um arquivo de configuração personalizado em vez daquele no diretório inicial do usuário.
Apenas altere a HOMEvariável para um diretório personalizado que contém o .toprcarquivo para suas necessidades.

# TOPRC_PROFILE_DIRECTORY contains .toprc (or can be created by saving using shift+w after configuring using keybindings) 
TOPRC_PROFILE_DIRECTORY="<your-directory>"
HOME="$TOPRC_PROFILE_DIRECTORY" top
Thomas
fonte