เป็นไปได้อย่างไรที่จะจัดเรียงฟิลด์ CPU ของคำสั่ง ps


18

ฉันกำลังพยายามสร้างคำสั่งขนาดเล็กที่จะค้นหากระบวนการที่ใช้พลังงาน CPU มากที่สุด

ประการแรกผมใช้แล้วps aux > file.txtcut -c 16-20 file.txt | sort -n | tail -5

ผลลัพธ์ที่ฉันได้รับคือ:

1.0 
2.7
8.
14.5
14.5 

ดังนั้นคำถามของฉันคือฉันจะมีทั้งการ%CPUใช้งานและฟิลด์อื่นที่แสดงร่วมกันได้อย่างไร


ทำไมไม่ใช้topแทน
โจเซฟอาร์

@JosephR ฉันแค่อยากใช้คำสั่งที่ฉันเพิ่งเรียนรู้สำหรับการประมวลผลข้อความบน 'สคริปต์' ตัวเล็กนี้
Spyros Chiotakis

1
awkดีถ้าคุณกำลังทำมันเป็นประเภทของการออกกำลังกายแล้วคุณอาจต้องการที่จะดู หลังจากนั้นเมื่อคุณพร้อมที่จะย้ายสิ่งต่าง ๆ "เป็นการผลิต" คุณควรใช้topในโหมดแบทช์ถ้ามันเหมาะสำหรับความต้องการของคุณ
โจเซฟอาร์

1
คุณยังสามารถกำจัดสื่อกลางfile.txtโดยการทำps aux|cut -c ...
โจเซฟอาร์

คำตอบ:


30

คำตอบที่ถูกต้องคือ:

ps --sort=-pcpu

สำหรับ 5 อันดับแรก:

ps --sort=-pcpu | head -n 6

ดังนั้นคุณสามารถระบุคอลัมน์โดยไม่รบกวนการเรียงลำดับ

Ex:

ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6

หมายเหตุ 'ckujau': --sortได้รับการสนับสนุนโดยpsจากprocpsการใช้งานอื่น ๆ ที่อาจจะไม่ได้มีตัวเลือกนี้


นี่เป็นคำตอบที่ถูกต้องแน่นอน
เฟลิเป้อัลวาเรซ

2
โปรดทราบว่า--sortได้รับการสนับสนุนpsจากprocpsเท่านั้นการใช้งานอื่นอาจไม่มีตัวเลือกนี้
ckujau

ขอบคุณ 'ckujau' ที่สังเกตสิ่งนี้ ฉันแก้ไขคำตอบ
Facundo Victor

11

เรียงลำดับในฟิลด์ที่เหมาะสม (โดยค่าเริ่มต้นกำหนดเป็นช่องว่างไปสู่การเปลี่ยนที่ไม่ใช่ช่องว่าง) ในกรณีของฉันมันเป็นหนึ่งในสาม:

ps aux | sort -n -k 3

สิ่งนี้ไม่ดีเท่ากับคำตอบของ @ Facundo เพราะถ้าคุณเปลี่ยนคอลัมน์ที่มองเห็นได้คุณจะต้องเปลี่ยนคีย์การเรียงลำดับด้วย
Jonathan Hartley

1
@ JonathanHartley ใช่ แต่เฉพาะในกรณีที่คุณpsมี--sortตัวเลือก
เตอร์

ยุติธรรมพอสมควร และความยาวความคิดเห็นขั้นต่ำ
Jonathan Hartley

3

สิ่งหนึ่งที่น่ารำคาญกับโซลูชันที่ยอมรับคือส่วนหัวของคอลัมน์ต่าง ๆ จะรวมอยู่ในผลลัพธ์ อีกประเด็นที่ว่าเมื่อคุณใช้สวิทช์-xเพื่อpsจะให้บรรทัดคำสั่งเต็มรูปแบบสำหรับบางโปรแกรมที่สามารถทำงานบนและกลายเป็นความรำคาญในการส่งออก

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

  1. บรรทัดคำสั่งที่น่ารำคาญ

    saml 18174 7.3 3.2 1174896 259756? Sl Aug27 132: 38 / opt / google / chrome / chrome --type = renderer --lang = en-US - force-fieldtrials = AsyncDns / AsyncDnsB / ForceCompositingMode / ปิดการใช้งาน / InfiniteCache / ไม่ / OmniboxHQPReplaceHUPProhibitTrumpingInlineableRestultSqalls1 / OneClickSignIn / มาตรฐาน / Prerender / PrerenderControl / SendFeedbackLinkLocation / default / Test0PercentDefault / group_01 / UMA-แบบไดนามิก-ไบนารีสม่ำเสมอทดลอง / default / UMA-เซสชันแบบสุ่มสม่ำเสมอทดลองใช้-5-ร้อยละ / group_17 / UMA สม่ำเสมอทดลองใช้ -1-ร้อยละ / group_20 / UMA สม่ำเสมอทดลองใช้-10-ร้อยละ / group_07 / UMA สม่ำเสมอทดลองใช้-20-ร้อยละ / default / UMA สม่ำเสมอทดลองใช้-5-ร้อยละ / group_04 / UMA สม่ำเสมอทดลองใช้-50 -Percent / group_01 / --enable-crash-journal = 4061BD10D0DC127169CE2132BC3FF8EC,

    root 1764 7.7 0.3 163692 28928 tty1 Ss + Aug21 817: 49 / usr / bin / Xorg: 0 -nr -verbose -auth / var / run / gdm / auth-for-gdm-fADI0V / ฐานข้อมูล -nolisten tcp vt1

    Chrome โดยเฉพาะอาจค่อนข้างน่ารำคาญเมื่อดูpsผลลัพธ์เช่นนี้!

  2. ส่วนหัวในเอาต์พุต

    $ ps auf | sort -nk 3 | head -20
    ...
    root      1741  0.0  0.0   4140   400 tty5     Ss+  Aug21   0:00 /sbin/mingetty /dev/tty5
    root      1743  0.0  0.0   4140   400 tty6     Ss+  Aug21   0:00 /sbin/mingetty /dev/tty6
    saml     13780  0.0  0.0 115088  4216 pts/13   Ss   Aug27   0:00 bash
    saml     20432  0.0  0.0   6308   400 pts/9    S+   Aug27   0:00  \_ inotifywatch -e CREATE /etc
    saml      8206  0.0  0.0 115296  1108 pts/6    Ss+  Aug21   0:03 bash
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    saml     29352  0.1  0.5 661848 42960 pts/13   Sl+  17:59   0:18  \_ irb
    ...

    คุณสามารถเห็นส่วนหัวผสมในบรรทัดที่ 7 ในผลลัพธ์

ทางเลือก

  1. กำจัดส่วนหัว

    psจัดเตรียมสวิตช์สำหรับปิดใช้งานการแสดงผลของส่วนหัวคอลัมน์เหล่านี้ มันใช้งานง่ายเพียงเพิ่ม--no-headingสวิตช์

    $ ps aux --no-heading | sort -nk 3 | head -10
    68        1481  0.0  0.0  38592  2144 ?        Ssl  Aug21   0:28 hald
    68        1527  0.0  0.0  18016   672 ?        S    Aug21   0:01 /usr/libexec/hald-addon-acpi
    avahi     1333  0.0  0.0  27872  1172 ?        S    Aug21   0:01 avahi-daemon: running [grinchy.local]
    avahi     1334  0.0  0.0  27752    20 ?        S    Aug21   0:00 avahi-daemon: chroot helper
    dbus      1307  0.0  0.0  22716  1900 ?        Ss   Aug21   1:03 dbus-daemon --system
    gdm       1879  0.0  0.0 317220  2740 ?        Sl   Aug21   0:00 /usr/libexec/polkit-gnome-authentication-agent-1
    ntp       3060  0.0  0.0  32600  2152 ?        Ss   20:05   0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
    root         1  0.0  0.0  19420  1004 ?        Ss   Aug21   0:01 /sbin/init
    root      1006  0.0  0.0      0     0 ?        S    Aug21   0:00 [kvm-irqfd-clean]
    root      1020  0.0  0.0      0     0 ?        S    Aug21   2:02 [kdmflush]

    หรือเช่นนี้

    $ ps auf --no-heading | sort -nk 3 |head -10
    root      1735  0.0  0.0   4140   400 tty2     Ss+  Aug21   0:00 /sbin/mingetty /dev/tty2
    root      1737  0.0  0.0   4140   400 tty3     Ss+  Aug21   0:00 /sbin/mingetty /dev/tty3
    root      1739  0.0  0.0   4140   400 tty4     Ss+  Aug21   0:00 /sbin/mingetty /dev/tty4
    root      1741  0.0  0.0   4140   400 tty5     Ss+  Aug21   0:00 /sbin/mingetty /dev/tty5
    root      1743  0.0  0.0   4140   400 tty6     Ss+  Aug21   0:00 /sbin/mingetty /dev/tty6
    saml     13780  0.0  0.0 115088  4216 pts/13   Ss   Aug27   0:00 bash
    saml     20432  0.0  0.0   6308   400 pts/9    S+   Aug27   0:00  \_ inotifywatch -e CREATE /etc
    saml      2098  0.0  0.0 115508  3148 pts/9    Ss   Aug22   0:05 bash
    saml     27134  0.0  0.0 115496  6768 pts/18   Ss   Aug27   0:02 bash
    saml      3248  0.0  0.0 115076  1024 pts/0    Ss+  Aug21   0:00 bash
  2. ควบคุมคอลัมน์ที่แสดงอยู่

    สิ่งนี้อาจดูเหมือนว่าจะเจ็บปวด แต่ถ้าคุณเขียนสคริปต์เกี่ยวกับการแสดงpsผลมันก็ไม่เลวร้ายนัก คำสั่งเช่นนี้จะเลียนแบบเอาท์พุทps auxยกเว้นสลับรูปแบบที่ยาวกว่าของCOMMANDคอลัมน์ด้วยเวอร์ชันที่สั้นกว่าซึ่งเพิ่งแสดงชื่อของไฟล์เรียกทำงาน

    $ ps ax --no-headings -o user,pid,%cpu,%mem,vsz,sgi_rss,tname,stat,start_time,time,ucmd

    การรวมทั้งหมดเข้าด้วยกันโดยไม่มีส่วนหัวคอลัมน์จะจัดการได้ง่ายขึ้นเมื่อสคริปต์

    รายการกระบวนการ CPU% สูงสุดและต่ำสุด:

    $ ps ax --no-headings -o user,pid,%cpu,%mem,vsz,sgi_rss,tname,stat,start_time,time,ucmd |sort -nrk 3|head -10
    saml     18086  114  6.4 1418852 515236 ?     Sl   Aug27 1-10:53:31 chrome
    saml     18536 14.7  4.1 1276240 328636 ?     Sl   Aug27 04:29:21 chrome
    saml     18558 12.2  3.4 1209712 278228 ?     Sl   Aug27 03:44:22 chrome
    saml     18543 10.9  3.8 1238132 308824 ?     Rl   Aug27 03:20:18 chrome
    root      1764  7.7  0.4 170220 35276 tty1    Rs+  Aug21 13:40:16 Xorg
    saml     18174  7.3  3.0 1167728 241728 ?     Sl   Aug27 02:14:25 chrome
    saml     18314  3.6  1.4 1049020 119308 ?     Sl   Aug27 01:06:19 chrome
    saml     18528  2.7  3.1 1178368 251212 ?     Sl   Aug27 00:50:55 chrome
    saml      2389  2.0  0.1 330632 8480 ?        Sl   Aug21 03:37:13 compiz
    saml     18208  1.7  1.3 1081132 108828 ?     Sl   Aug27 00:32:02 chrome

    รายการของกระบวนการ CPU% ต่ำสุดถึงสูงสุด:

    $ ps ax --no-headings -o user,pid,%cpu,%mem,vsz,sgi_rss,tname,stat,start_time,time,ucmd |sort -nk 3|tail -10
    saml     18208  1.7  1.3 1082156 108348 ?     Sl   Aug27 00:32:03 chrome
    saml      2389  2.0  0.1 330632 8492 ?        Sl   Aug21 03:37:15 compiz
    saml     18528  2.7  3.1 1181440 250856 ?     Sl   Aug27 00:50:58 chrome
    saml     18314  3.6  1.5 1050044 119828 ?     Sl   Aug27 01:06:25 chrome
    saml     18174  7.3  3.0 1167728 242068 ?     Sl   Aug27 02:14:32 chrome
    root      1764  7.7  0.3 163688 28716 tty1    Ss+  Aug21 13:40:26 Xorg
    saml     18543 10.9  3.8 1235060 305464 ?     Sl   Aug27 03:20:32 chrome
    saml     18558 12.2  3.5 1214832 283560 ?     Sl   Aug27 03:44:34 chrome
    saml     18536 14.7  3.9 1267024 314400 ?     Sl   Aug27 04:29:39 chrome
    saml     18086  114  6.4 1412992 514856 ?     Sl   Aug27 1-10:55:28 chrome
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.