คำสั่งยอดนิยม - วิธีลดคอลัมน์ที่แสดง


17

เราสามารถรับคอลัมน์เฉพาะในคำสั่งด้านบนได้หรือไม่ตัวอย่างเช่นฉันสนใจเฉพาะการใช้งานหน่วยความจำและคอลัมน์การใช้ CPU

ฉันจะลดคอลัมน์ที่แสดงของคำสั่งด้านบนให้เหลือเพียงสองคอลัมน์ด้านบนได้อย่างไร


3
ระบบปฏิบัติการอะไร สิ่งtopที่แตกต่าง? มีการนำไปใช้งานหลายสิบอย่าง
Stéphane Chazelas

โปรดระบุระบบปฏิบัติการและเวอร์ชันยอดนิยมของคุณ ( top -h)
slm

คำตอบ:


19

หมายเหตุ:สมมติว่าคุณมีtop(procps)รุ่นนี้ คุณสามารถตรวจสอบด้วยคำสั่งนี้:

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

procps มักจะเป็นเวอร์ชั่นที่topมาพร้อมกับ Fedora / CentOS / RHEL และตัวแปรอื่น ๆ

การเปลี่ยนคอลัมน์

หากคุณมองหาหน้า man page topคุณจะเห็นหัวข้อที่ชื่อ: "2b. SELECTING and ORDERING Columns" มีแป้นพิมพ์ลัดเพื่อสลับการมองเห็นฟิลด์ / คอลัมน์ที่แตกต่างกัน

ตัวอย่างเช่น:

  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

คุณสามารถใช้ปุ่มfขณะอยู่ในtopเพื่อไปยังหน้าจอรองที่คุณสามารถระบุคอลัมน์ที่ควรจะสลับการมองเห็นหรือไม่:

ตัวอย่างเช่น:

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

มีมากกว่านี้เป็นเพียงตัวอย่าง เมื่อคุณสลับคอลัมน์ตามที่คุณต้องการแล้วให้ใช้Escเพื่อออกจากหน้าจอการเลือก

กำลังบันทึกการกำหนดค่า

คุณสามารถใช้เครื่องหมายShift+ Wเพื่อบันทึกการเปลี่ยนแปลงดังนั้นจึงเป็นค่าเริ่มต้น:

  W         Write configuration file

ไฟล์ถูกเก็บไว้ที่นี่$HOME/.toprcและมีลักษณะดังนี้:

$ 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

ดูส่วนที่ 5 ของ man page สำหรับรายละเอียดเพิ่มเติม "5. FILES"


มีวิธีการเปลี่ยนคอลัมน์ / ฟิลด์ผ่านการตั้งค่าสถานะบรรทัดคำสั่งหรือไม่? สิ่งนี้จะเป็นประโยชน์จริง ๆ เช่นการตรวจสอบยอดนิยมในเครื่องที่แตกต่างกันและรับผลลัพธ์ที่เป็นมาตรฐาน
naught101

@ naught101 - หากคุณมีคำถามใหม่ถามบนเว็บไซต์หลัก ความคิดเห็นไม่ได้มีไว้สำหรับสิ่งนั้นจริงๆ
slm

2

[Centos-6 | Ubuntu 12.10] พิมพ์ cmd ด้านบน 4 กระบวนการเรียงลำดับตามการใช้งาน CPU

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

เอาท์พุต

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

หมายเหตุ: head -n 5 แทน 4 เพราะเรามีชื่อคอลัมน์ด้วย

คอลัมน์ $ 9, $ 10, $ 12 หมายถึง CPU, MEM, COMMAND ใช้คำสั่ง 'top' เพื่อรับหมายเลขคอลัมน์

จัดเรียงตาม MEMORY USAGE ('สูงสุด' ของคุณต้องรองรับ -m เพื่อเรียกใช้งานนี้)

# 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

เวอร์ชั่นสูงสุดของรุ่นนี้คืออะไร?
slm

ฉันใช้ centos-6.4 คำสั่งด้านบนของ Ubuntu ไม่รองรับ -m สำหรับการเรียงลำดับการใช้หน่วยความจำของฉัน
ประมาณ

น่าสนใจฉันอยู่ที่ Fedora (14) ฉันได้รับรุ่นยอดนิยมของ procps ฉันเพิ่งตรวจสอบสองครั้งและบน CentOS 5 + 6 พวกเขากำลังใช้ procps ชั้นนำเช่นกัน คำสั่งของคุณใช้ไม่ได้กับ F14 มันใช้งานได้กับ CentOS 5 + 6 เป็นเพียง FYI สำหรับทุกคนที่เจอหัวข้อนี้!
slm

1

เพื่อดูในรูปแบบ json และลบส่วนหัวเช่นกัน

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

การส่งออกเช่นด้านล่าง

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

คุณสามารถรวมตัวกันเป็นหนึ่งgrep | awk | head | tail awk
roaima

0

การกำหนดค่าบรรทัดคำสั่ง
ฉันไม่ต้องการส่งผลกระทบต่อผู้ใช้ทั้งหมดของฉันโดยเขียนทับผู้ใช้.toprcดังนั้นฉันจึงหาวิธีแก้ปัญหาเพื่อให้มีการกำหนดค่าแยกต่างหากต่อการใช้เคส
คุณสามารถtopใช้ไฟล์การกำหนดค่าแบบกำหนดเองแทนการใช้ในไดเรกทอรีบ้านของผู้ใช้ของคุณ
เพียงเปลี่ยนHOMEตัวแปรเป็นไดเรกทอรีที่กำหนดเองที่มี.toprcไฟล์ตามความต้องการของคุณ

# 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.