Comando superior: cómo reducir las columnas mostradas


17

¿Podemos obtener una columna específica en un comando superior? Por ejemplo, solo estoy interesado en la columna de utilización de la memoria y uso de la CPU.

¿Cómo reduzco las columnas mostradas del comando superior a solo las dos columnas anteriores?


3
Que sistema operativo Que topvariante Hay docenas de implementaciones principales.
Stéphane Chazelas

Indíquenos su sistema operativo y la versión superior ( top -h).
slm

Respuestas:


19

NOTA: Suponiendo que tenga esta versión de top(procps) . Puede verificar con 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 es a menudo la versión topincluida con Fedora / CentOS / RHEL y otras variantes.

Cambio de columnas

Si busca en la página del manual top, verá una sección titulada: "2b. SELECCIÓN Y PEDIDO DE COLUMNAS". Hay atajos de teclado para alternar la visibilidad de los diferentes campos / columnas.

Por ejemplo:

  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

Puede usar la tecla fmientras está en toppara llegar a una pantalla secundaria donde puede especificar qué columnas deben alternarse visibles o no:

Por ejemplo:

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)
...

Hay más, estos son solo una muestra. Cuando termine de alternar las columnas de la manera que desee, use Escpara salir de la pantalla de selección.

Guardar configuración

Puede usar el Shift+ Wpara guardar sus cambios para que sean los predeterminados:

  W         Write configuration file

El archivo se almacena aquí $HOME/.toprc, y tiene este aspecto:

$ 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 la sección 5 de la página del manual para obtener más detalles, "5. ARCHIVOS".


¿Hay alguna manera de cambiar las columnas / campo a través de una bandera de línea de comando? Esto sería realmente útil, por ejemplo, para verificar la parte superior en diferentes máquinas y obtener una salida estandarizada.
naught101

@ naught101: si tiene una nueva pregunta, hágalo en el sitio principal. Los comentarios no son realmente para eso.
slm

2

[Centos-6 | Ubuntu 12.10] Este cmd imprime 4 procesos principales ordenados por USO DE CPU

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

Salida

%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 en lugar de 4 porque también tenemos el nombre de la columna

columnas $ 9, $ 10, $ 12 significa CPU, MEM, COMANDO. Use el comando 'top' para obtener números de columna

Ordenar por USO DE MEMORIA (su 'top' debe ser compatible con -m para ejecutar esto)

# 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

¿Qué versión de top es esta?
slm

Usé centos-6.4. El comando superior en Ubuntu no admite -m para ordenar mi uso de memoria.
húmedo el

Interesante, estoy en Fedora (14), obtengo la versión procps de top. Acabo de verificar dos veces y en CentOS 5 + 6 también están usando procps superiores. Su comando no funcionó en F14. Sin embargo, funciona en CentOS 5 + 6. ¡Solo un FYI para cualquiera que se encuentre con este hilo!
slm

1

para ver en formato json y eliminar el encabezado también,

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

salida como a continuación,

{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}

Tu grep | awk | head | tailse puede unir en un solo awk.
roaima

0

Configuración de la línea de comando
No quería afectar a todo mi usuario sobrescribiéndolo .toprc, así que se me ocurrió una solución para tener una configuración separada por caso de uso.
Puede toputilizar un archivo de configuración personalizado en lugar del que se encuentra en el directorio de inicio de sus usuarios.
Simplemente cambie la HOMEvariable a un directorio personalizado que contenga el .toprcarchivo para sus necesidades.

# 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.