เราสามารถรับคอลัมน์เฉพาะในคำสั่งด้านบนได้หรือไม่ตัวอย่างเช่นฉันสนใจเฉพาะการใช้งานหน่วยความจำและคอลัมน์การใช้ CPU
ฉันจะลดคอลัมน์ที่แสดงของคำสั่งด้านบนให้เหลือเพียงสองคอลัมน์ด้านบนได้อย่างไร
top -h
)
เราสามารถรับคอลัมน์เฉพาะในคำสั่งด้านบนได้หรือไม่ตัวอย่างเช่นฉันสนใจเฉพาะการใช้งานหน่วยความจำและคอลัมน์การใช้ CPU
ฉันจะลดคอลัมน์ที่แสดงของคำสั่งด้านบนให้เหลือเพียงสองคอลัมน์ด้านบนได้อย่างไร
top -h
)
คำตอบ:
หมายเหตุ:สมมติว่าคุณมี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"
[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
เพื่อดูในรูปแบบ 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
การกำหนดค่าบรรทัดคำสั่ง
ฉันไม่ต้องการส่งผลกระทบต่อผู้ใช้ทั้งหมดของฉันโดยเขียนทับผู้ใช้.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
top
ที่แตกต่าง? มีการนำไปใช้งานหลายสิบอย่าง