Lệnh hàng đầu - Cách giảm các cột được hiển thị


17

Chúng ta có thể lấy cột cụ thể trong một lệnh hàng đầu không, ví dụ: tôi chỉ quan tâm đến việc sử dụng bộ nhớ và cột sử dụng CPU.

Làm cách nào để giảm các cột được hiển thị của lệnh trên xuống chỉ còn hai cột ở trên?


3
HĐH gì? Có gì topbiến thiên? Có hàng tá triển khai hàng đầu.
Stéphane Chazelas

Vui lòng cung cấp cho chúng tôi hệ điều hành và phiên bản hàng đầu của bạn ( top -h).
slm

Câu trả lời:


19

LƯU Ý: Giả sử bạn có phiên bản này top(Procps) . Bạn có thể kiểm tra bằng lệnh này:

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

Procps thường là phiên bản đi topkèm với Fedora / CentOS / RHEL và các biến thể khác.

Thay đổi cột

Nếu bạn nhìn vào trang man, topbạn sẽ thấy một phần có tiêu đề: "2b. Cột CHỌN VÀ ĐẶT HÀNG". Có các phím tắt để chuyển đổi mức độ hiển thị cho các trường / cột khác nhau.

Ví dụ:

  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

Bạn có thể sử dụng phím ftrong khi vào topđể đến màn hình phụ nơi bạn có thể chỉ định cột nào sẽ được bật hoặc không hiển thị:

Ví dụ:

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

Có nhiều hơn, đây chỉ là một mẫu. Khi bạn hoàn thành việc chuyển các cột theo cách bạn muốn, hãy sử dụng Escđể thoát khỏi màn hình lựa chọn.

Lưu cấu hình

Bạn có thể sử dụng dấu Shift+ Wđể lưu các thay đổi của mình để chúng là mặc định:

  W         Write configuration file

Các tập tin được lưu trữ ở đây $HOME/.toprc, và trông như thế này:

$ 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

Xem phần 5 của trang man để biết thêm chi tiết, "5. PHIM".


Có cách nào để thay đổi cột / trường thông qua cờ dòng lệnh không? Điều này sẽ thực sự hữu ích, ví dụ để kiểm tra hàng đầu trên các máy khác nhau và nhận đầu ra được tiêu chuẩn hóa.
ness101

@ naught101 - nếu bạn có câu hỏi mới, hãy hỏi nó trên trang web chính. Nhận xét không thực sự có ý nghĩa cho điều đó.
slm

2

[Centos-6 | Ubuntu 12.10] cmd này in 4 quy trình hàng đầu sắp xếp theo SỬ DỤNG CPU

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

Đầu ra

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

Lưu ý: head -n 5 thay vì 4 vì chúng tôi cũng có tên cột

cột $ 9, $ 10, $ 12 có nghĩa là CPU, MEM, NHÀ. Sử dụng lệnh 'top' để lấy số cột

Sắp xếp theo SỬ DỤNG NHỚ ('trên cùng' của bạn phải hỗ trợ -m để chạy cái này)

# 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

Phiên bản nào của top này?
slm

Tôi đã sử dụng centos-6.4. Lệnh hàng đầu trên Ubuntu không hỗ trợ -m để sắp xếp việc sử dụng bộ nhớ của tôi.
damphat

Thật thú vị, tôi đang ở Fedora (14), tôi đang nhận phiên bản hàng đầu của Procps. Tôi vừa kiểm tra hai lần và trên CentOS 5 + 6 họ cũng đang sử dụng các gói hàng đầu. Lệnh của bạn không hoạt động trên F14. Nó không hoạt động trên CentOS 5 + 6. Chỉ là một FYI cho bất cứ ai đi qua chủ đề này!
slm

1

để xem ở định dạng json và loại bỏ tiêu đề là tốt,

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

đầu ra như dưới đây,

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

Bạn grep | awk | head | tailcó thể kết hợp thành một awk.
roaima

0

Cấu hình dòng lệnh
Tôi không muốn ảnh hưởng đến toàn bộ người dùng của mình bằng cách ghi đè người dùng .toprc, vì vậy tôi đã đưa ra một giải pháp để có cấu hình riêng cho mỗi trường hợp sử dụng.
Bạn có thể topsử dụng tệp cấu hình tùy chỉnh thay vì tệp trong thư mục chính của người dùng.
Chỉ cần thay đổi HOMEbiến thành một thư mục tùy chỉnh chứa .toprctệp cho nhu cầu của bạn.

# 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.