Comanda de sus – Cum se reduc coloanele afișate (Unix, Top, Coloane)

Surya a intrebat.

Putem obține o coloană specifică într-o comandă de top, de exemplu, sunt interesat doar de coloana de utilizare a memoriei și de utilizare a CPU.

Cum pot reduce coloanele afișate din comanda de top doar la cele două coloane de mai sus?

Comentarii

  • Ce sistem de operare? Ce top variantă? Există zeci de implementări de top. –  > Por Stéphane Chazelas.
  • Vă rugăm să ne furnizați sistemul de operare și versiunea de top (top -h). –  > Por slm.
4 răspunsuri
slm

NOTĂ: Presupunând că aveți această versiune de top (procps). Puteți verifica cu această comandă:

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

procps este adesea versiunea de top inclusă în Fedora/CentOS/RHEL și în alte variante.

Modificarea coloanelor

Dacă vă uitați în pagina de manual pentru top veți vedea o secțiune intitulată: „2b. SELECȚIA și ORDONAREA coloanelor”. Există comenzi rapide de la tastatură pentru comutarea vizibilității pentru diferitele câmpuri/coloane.

De exemplu:

  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

Puteți utiliza tasta f în timp ce vă aflați în top pentru a ajunge la un ecran secundar în care puteți specifica ce coloane trebuie să fie comutate ca fiind vizibile sau nu:

De exemplu:

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

Mai sunt și altele, acestea sunt doar un exemplu. După ce ați terminat de comutat coloanele așa cum doriți, utilizați funcția Esc pentru a ieși din ecranul de selecție.

Salvarea configurației

Puteți utiliza butonul Shift+W pentru a vă salva modificările, astfel încât acestea să devină cele implicite:

  W         Write configuration file

Fișierul este stocat aici, $HOME/.toprc, , și arată astfel:

$ 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

Consultați secțiunea 5 din pagina de manual pentru mai multe detalii, „5. FILE”.

Comentarii

  • Există o modalitate de a schimba coloanele/câmpurile prin intermediul unui indicator din linia de comandă? Acest lucru ar fi foarte util, de exemplu, pentru a verifica topul pe diferite mașini și a obține o ieșire standardizată. –  > Por naught101.
  • @naught101 – dacă aveți o întrebare nouă, puneți-o pe site-ul principal. Comentariile nu sunt destinate pentru asta. –  > Por slm.
damphat

[Centos-6 | Ubuntu 12.10] Acest cmd tipărește 4 procese de top sortate după CPU USAGE

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

Ieșire

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

Notă: head -n 5 în loc de 4 pentru că avem și numele coloanei

coloanele $9, $10, $12 înseamnă CPU, MEM, COMMAND. Utilizați comanda ‘top’ pentru a obține numerele coloanelor

Sortați după MEMORY USAGE (comanda ‘top’ trebuie să suporte -m pentru a rula acest lucru)

# this work on my centos-6 machine, NOT work on my Ubuntu 12.10
top -m -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s
", $9, $10, $12); }' | head -n 5

Comentarii

  • Ce versiune de top este aceasta? –  > Por slm.
  • Am folosit centos-6.4. Comanda top de pe Ubuntu nu acceptă -m pentru sortarea utilizării memoriei. –  > Por damphat.
  • Interesant, eu sunt pe Fedora (14), primesc versiunea de top a lui procps. Tocmai am verificat de două ori și pe CentOS 5 + 6 folosesc și ele top procps. Comanda ta nu a funcționat pe F14. Funcționează însă pe CentOS 5 + 6. Doar un FYI pentru oricine care dă peste acest fir de discuție! –  > Por slm.
Som

pentru a vizualiza în format json și eliminarea antetului, de asemenea,

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

ieșire ca mai jos,

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

Comentarii

  • grep | awk | head | tail poate fi reunită într-un singur fișier awk. –  > Por roaima.
Thomas

Configurația liniei de comandă
Nu am vrut să-mi afectez întregul utilizator prin suprascrierea utilizatorului .toprc, , așa că am venit cu o soluție pentru a avea o configurație separată pentru fiecare caz de utilizare.
Puteți face top folosiți un fișier de configurare personalizat în locul celui din directorul home al utilizatorului.
Trebuie doar să modificați fișierul HOME cu un director personalizat care să conțină fișierul .toprc pentru nevoile dumneavoastră.

# 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

Tags:,