Najważniejsze polecenie - Jak zmniejszyć wyświetlane kolumny

17

Czy możemy uzyskać konkretną kolumnę w górnym poleceniu, na przykład interesuje mnie tylko użycie pamięci i użycie procesora.

Jak zredukować wyświetlane kolumny górnego polecenia do tylko dwóch powyższych kolumn?

Surya
źródło
3
Jaki system operacyjny Jaki topwariant Istnieją dziesiątki najlepszych wdrożeń.
Stéphane Chazelas,
Podaj nam swój system operacyjny i najwyższą wersję ( top -h).
slm

Odpowiedzi:

19

UWAGA: Zakładając, że masz tę wersję top(procps) . Możesz sprawdzić za pomocą tego polecenia:

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

procps jest często wersją topdołączoną do Fedory / CentOS / RHEL i innych wariantów.

Zmiana kolumn

Jeśli spojrzysz na stronę podręcznika top, zobaczysz sekcję zatytułowaną: „2b. WYBÓR I ZAMÓWIENIE Kolumny”. Istnieją skróty klawiaturowe do przełączania widoczności dla różnych pól / kolumn.

Na przykład:

  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

Możesz użyć tego klucza fpodczas topprzejścia do drugiego ekranu, na którym możesz określić, które kolumny mają być widoczne, czy nie:

Na przykład:

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

Jest więcej, to tylko próbka. Po zakończeniu przełączania kolumn w żądany sposób użyj przycisku, Escaby wyjść z ekranu wyboru.

Zapisywanie konfiguracji

Możesz użyć Shift+, Waby zapisać zmiany, aby były domyślne:

  W         Write configuration file

Plik jest tutaj przechowywany $HOME/.toprci wygląda następująco:

$ 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

Aby uzyskać więcej informacji, zobacz sekcję 5 strony podręcznika, „5. PLIKI”.

slm
źródło
Czy istnieje sposób na zmianę kolumn / pola za pomocą flagi wiersza poleceń? Byłoby to bardzo przydatne, na przykład do sprawdzania top na różnych komputerach i uzyskiwania znormalizowanego wyjścia.
naught101
@ naught101 - jeśli masz nowe pytanie, zadaj je na stronie głównej. Komentarze tak naprawdę nie są do tego przeznaczone.
slm
2

[Centos-6 | Ubuntu 12.10] Ten cmd drukuje 4 najlepsze procesy sortowane według UŻYCIA CPU

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

Wynik

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

Uwaga: head -n 5 zamiast 4, ponieważ mamy również nazwę kolumny

kolumny 9 $, 10 $, 12 $ oznaczają CPU, MEM, COMMAND. Użyj polecenia „góra”, aby uzyskać numery kolumn

Sortuj według UŻYTKOWANIA PAMIĘCI (Twoja „góra” musi obsługiwać -m, aby to uruchomić)

# 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
źródło
Która wersja topa to jest?
slm
Użyłem centos-6.4. Najważniejsze polecenie w Ubuntu nie obsługuje -m do sortowania zużycia pamięci.
damphat
Interesujące, jestem na Fedorze (14), dostaję wersję topową procpsa. Właśnie dwukrotnie sprawdziłem i na CentOS 5 + 6 używają również najlepszych procps. Twoje polecenie nie działało na F14. Działa jednak na CentOS 5 + 6. Tylko informacja dla każdego, kto natknie się na ten wątek!
slm
1

aby wyświetlić również w formacie json i usunąć nagłówek,

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

wyjście jak poniżej,

{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
źródło
Twój grep | awk | head | tailmoże być połączony w jeden awk.
roaima
0

Konfiguracja wiersza poleceń
Nie chciałem wpływać na całego mojego użytkownika, nadpisując go .toprc, więc wymyśliłem rozwiązanie mające osobną konfigurację dla każdego przypadku użycia.
Możesz topużyć niestandardowego pliku konfiguracyjnego zamiast pliku w katalogu domowym użytkowników.
Po prostu zmień HOMEzmienną na niestandardowy katalog zawierający .toprcplik dla swoich potrzeb.

# 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
Tomasz
źródło