Làm thế nào có thể sắp xếp trường CPU của lệnh ps?


18

Tôi đang cố gắng thực hiện một lệnh nhỏ sẽ tìm thấy các quy trình sử dụng nhiều năng lượng CPU nhất.

Đầu tiên, tôi sử dụng ps aux > file.txtvà sau đó cut -c 16-20 file.txt | sort -n | tail -5.

Kết quả tôi nhận được là:

1.0 
2.7
8.
14.5
14.5 

Vì vậy, câu hỏi của tôi là làm thế nào tôi có thể có cả việc %CPUsử dụng và các lĩnh vực khác xuất ra cùng nhau?


Tại sao không sử dụng topthay thế?
Joseph R.

@JosephR. Tôi chỉ muốn sử dụng các lệnh mà tôi vừa học để xử lý văn bản trên 'tập lệnh' nhỏ này.
Spyros Chiotakis

1
Chà, nếu bạn đang thực hiện nó như một dạng bài tập, thì bạn có thể muốn xem xét awk. Sau đó, khi bạn sẵn sàng chuyển mọi thứ "sang sản xuất", bạn nên sử dụng topở chế độ hàng loạt nếu nó phù hợp với yêu cầu của bạn.
Joseph R.

1
Bạn cũng có thể loại bỏ trung gian file.txtbằng cách thực hiệnps aux|cut -c ...
Joseph R.

Câu trả lời:


30

Đáp án đúng là:

ps --sort=-pcpu

Đối với top 5:

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

Vì vậy, bạn có thể chỉ định các cột mà không can thiệp vào sắp xếp.

Vd

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

Lưu ý 'ckujau': --sortđược hỗ trợ pstừ procps, các triển khai khác có thể không có tùy chọn này.


Đây thực sự là câu trả lời chính xác.
Felipe Alvarez

2
Hãy lưu ý rằng --sortchỉ được hỗ trợ bởi pstừ procps, triển khai khác có thể không có tùy chọn này.
ckujau

Cảm ơn bạn 'ckujau' đã lưu ý điều này. Tôi chỉnh sửa câu trả lời.
Facundo Victor

11

Sắp xếp trên trường thích hợp (theo mặc định được xác định là khoảng trắng sang chuyển tiếp không phải khoảng trắng), trong trường hợp của tôi, đó là trường thứ 3:

ps aux | sort -n -k 3

Điều này không tốt như câu trả lời của @ Facundo, bởi vì nếu bạn thay đổi các cột hiển thị, bạn cũng sẽ phải thay đổi khóa sắp xếp.
Jonathan Hartley

1
@JonathanHartley có, nhưng chỉ khi bạn ps--sorttùy chọn.
peterph

Đủ công bằng. Và độ dài bình luận tối thiểu.
Jonathan Hartley

3

Một điều khó chịu với giải pháp được chấp nhận là các tiêu đề cho các cột khác nhau sẽ được đưa vào đầu ra. Một vấn đề khác là khi bạn sử dụng chuyển -xsang psnó sẽ cung cấp các dòng lệnh đầy đủ cho một số chương trình, có thể chạy và trở thành một mối phiền toái trong đầu ra.

Ví dụ

  1. Làm phiền dòng lệnh

    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 / vô hiệu hóa / vô hiệu hóa / OneClickSignIn / Standard / Prerender / PrerenderControl / SendFeedbackLinkLocation / default / Test0PercentDefault / group_01 / UMA-Dynamic-Binary-Uniformity-Trial / default / UMA-session-Randomized-Trial-5 -1-Phần trăm / nhóm_20 / UMA-Đồng nhất-Thử-10-Phần trăm / nhóm_07 / UMA-Đồng nhất-Thử-20-Phần trăm / mặc định / UMA-Đồng nhất-Thử-5-Phần trăm / nhóm_04 / UMA-Đồng nhất-Thử-50 -Percent / group_01 / --enable-crash-phóng viên = 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 / cơ sở dữ liệu -nolisten

    Chrome đặc biệt có thể khá khó chịu khi nhìn vào psđầu ra như thế này!

  2. Tiêu đề đầu ra

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

    Bạn có thể thấy tiêu đề được trộn ở dòng thứ 7 trong đầu ra.

Lựa chọn thay thế

  1. Loại bỏ các tiêu đề

    pscung cấp một công tắc để vô hiệu hóa hiển thị các tiêu đề cột này. Nó khá dễ sử dụng, chỉ cần thêm công --no-headingtắc.

    $ 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]

    Hoặc như thế này:

    $ 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. Kiểm soát các cột được hiển thị.

    Điều này có vẻ như là một nỗi đau, nhưng nếu bạn đang kịch bản nắm bắt psđầu ra thì điều đó không quá tệ. Một lệnh như thế này sẽ bắt chước đầu ra của ps aux, ngoại trừ trao đổi dạng COMMANDcột dài hơn với phiên bản ngắn hơn chỉ hiển thị tên của tệp thực thi.

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

    Đặt tất cả lại với nhau mà không có tiêu đề cột sẽ dễ xử lý hơn khi viết kịch bản.

    Danh sách các quá trình CPU cao nhất đến thấp nhất%:

    $ 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

    Danh sách các quá trình CPU thấp nhất đến cao nhất:

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