Top Command - Cara mengurangi Kolom yang ditampilkan

17

Bisakah kita mendapatkan kolom tertentu dalam perintah atas, misalnya saya hanya tertarik pada pemanfaatan memori dan kolom penggunaan CPU.

Bagaimana cara mengurangi kolom yang ditampilkan dari perintah atas menjadi hanya dua kolom di atas?

Surya
sumber
3
OS apa? topVarian apa ? Ada puluhan implementasi teratas.
Stéphane Chazelas
Berikan OS dan versi teratas Anda ( top -h).
slm

Jawaban:

19

CATATAN: Dengan asumsi Anda memiliki versi top(procps) ini . Anda dapat memeriksa dengan perintah ini:

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

procps seringkali merupakan versi yang topdisertakan dengan Fedora / CentOS / RHEL dan varian lainnya.

Mengubah kolom

Jika Anda melihat halaman manual untuk topAnda akan melihat bagian berjudul: "2b. MEMILIH dan MEMESAN Kolom". Ada pintasan keyboard untuk mengaktifkan visibilitas untuk berbagai bidang / kolom.

Sebagai contoh:

  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

Anda dapat menggunakan tombol fsaat masuk topuntuk mendapatkan layar sekunder tempat Anda dapat menentukan kolom mana yang harus diubah terlihat atau tidak:

Sebagai contoh:

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

Ada lebih banyak, ini hanya sampel. Setelah selesai mengubah kolom sesuai keinginan, gunakan Escuntuk keluar dari layar pemilihan.

Menyimpan konfigurasi

Anda dapat menggunakan Shift+ Wuntuk menyimpan perubahan Anda sehingga merupakan defaultnya:

  W         Write configuration file

File disimpan di sini $HOME/.toprc,, dan terlihat seperti ini:

$ 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

Lihat bagian 5 dari halaman manual untuk detail lebih lanjut, "5. FILES".

slm
sumber
Apakah ada cara untuk mengubah kolom / bidang melalui flag baris perintah? Ini akan sangat berguna, misalnya untuk memeriksa teratas pada mesin yang berbeda dan mendapatkan output standar.
naught101
@ naught101 - jika Anda memiliki pertanyaan baru, tanyakan di situs utama. Komentar tidak dimaksudkan untuk itu.
slm
2

[Centos-6 | Ubuntu 12.10] Cmd ini mencetak 4 proses teratas diurutkan berdasarkan CPU USAGE

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

Keluaran

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

Catatan: head -n 5 bukan 4 karena kami juga memiliki nama kolom

kolom $ 9, $ 10, $ 12 berarti CPU, MEM, COMMAND. Gunakan perintah 'atas' untuk mendapatkan nomor kolom

Urutkan berdasarkan MEMORY USAGE ('top' Anda harus mendukung -m untuk menjalankan ini)

# 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
sumber
Versi teratas manakah ini?
slm
Saya menggunakan centos-6.4. Perintah teratas pada Ubuntu tidak mendukung -m untuk menyortir penggunaan memori saya.
damphat
Menarik, saya di Fedora (14), saya mendapatkan versi teratas dari procps. Saya baru saja mengecek dan pada CentOS 5 + 6 mereka menggunakan procp atas juga. Perintah Anda tidak berfungsi pada F14. Ini bekerja pada CentOS 5 + 6. Hanya FYI untuk siapa saja yang menemukan utas ini!
slm
1

untuk melihat dalam format json dan menghapus tajuk juga,

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

output seperti di bawah ini,

{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
sumber
Anda grep | awk | head | taildapat digabungkan menjadi satu awk.
roaima
0

Konfigurasi baris perintah
Saya tidak ingin memengaruhi seluruh pengguna saya dengan menimpa pengguna .toprc, jadi saya menemukan solusi untuk memiliki konfigurasi terpisah per use-case.
Anda dapat topmenggunakan file konfigurasi khusus alih-alih yang ada di direktori home pengguna Anda.
Cukup ubah HOMEvariabel ke direktori khusus yang berisi .toprcfile untuk kebutuhan Anda.

# 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
sumber