Hiển thị năm quá trình tiêu thụ CPU hàng đầu với `ps`


101

Làm thế nào để hiển thị năm quá trình tiêu thụ CPU hàng đầu với ps?

Câu trả lời:


95

Tại sao sử dụng pskhi bạn có thể làm điều đó dễ dàng với toplệnh?

Nếu bạn phải sử dụng ps, hãy thử điều này:

ps aux | sort -nrk 3,3 | head -n 5

Nếu bạn muốn một cái gì đó thực sự là 'top'esq với các cập nhật liên tục, hãy sử dụng đồng hồ

watch "ps aux | sort -nrk 3,3 | head -n 5"

3
ps phụ | sắp xếp -k 3,3 | đuôi -n 5 ;-)
PlanasB

1
Sẽ rất tốt nếu bao gồm sắp xếp số, bỏ qua tiêu đề của ps aux. ps aux | sort -nrk 3,3 | head -n 5
syss

1
điều này sinh ra nhiều quá trình tiêu tốn nhiều tài nguyên hơn và cũng dễ bị điều kiện chạy đua hơn, bởi vì khi dữ liệu được dẫn đến, danh sách quy trình có thể đã thay đổi
phuclv

Đây là sự thật @ LưuViênPhúc nhưng tôi tự hỏi làm thế nào điều này khác với cách topthực sự hoạt động.
icedwater

1
@ratedwater topđọc danh sách quy trình và tự hiển thị kết quả mà không cần chuyển sang bất kỳ quy trình nào khác
phuclv

87

Câu trả lời đúng là :

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.

Ví dụ:

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

Lưu ý cho MAC OS X : Trong Mac OS X, pskhông nhận ra --sort, nhưng cung cấp -rđể sắp xếp theo mức sử dụng CPU hiện tại. Do đó, đối với Mac OS X, bạn có thể sử dụng:

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

3
Đây là câu trả lời chính xác. Cảm ơn bạn Facundo. Tôi đã cố gắng giải thích cho những người khác rằng bạn có thể sử dụng sort và pipe nó, nhưng ps cũng được tích hợp sẵn một tùy chọn để sắp xếp và bây giờ tôi thấy bạn cũng sử dụng nó rất tuyệt.
Luis Alvarado

Lệnh thứ 2 có vẻ hữu dụng hơn ... nhưng lệnh đầu tiên dường như chỉ hiển thị bash(x2, hoặc headlà tốt) ps...
Wilf

3
@Wilf Cái đầu tiên là để làm nổi bật cách sắp xếp theo mức tiêu thụ cpu mà không cần sử dụng lệnh sort, phần thứ hai cho biết cách chỉ định các cột mà không can thiệp vào việc sắp xếp. Khi giải thích một cái gì đó .. tốt hơn là luôn luôn ngắn gọn và giải thích từng điều một.
Facundo Victor

27

Tùy thuộc vào nhu cầu của bạn, bạn có thể thấy điều này dễ đọc hơn một chút:

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5

đầu ra mẫu:

 1.3     4 root     [ksoftirqd/0]
 1.1     9 root     [ksoftirqd/1]
 1.0 17606 nobody   /usr/sbin/gmetad
 1.0    13 root     [ksoftirqd/2]
 0.3 17401 nobody   /usr/sbin/gmond

(các trường là% CPU, PID, USER, THÔNG TIN)


22

Tôi không nghĩ pslà những gì bạn đang tìm kiếm. Bạn đã nhìn vào đầu ra từ top?

Nếu bạn có GNU-Top, hãy thử sử dụng chế độ hàng loạt của nó để đưa ra danh sách quy trình được sắp xếp theo mức độ sử dụng cpu và sử dụng head / tail để có được 5 dòng trên cùng (8 đầu tiên là các tiêu đề):

top -b -n 1 | head -n 12  | tail -n 5

Đầu BSD dường như hoạt động khác đi và không có chế độ không tương tác, vì vậy hãy sử dụng một trong các psgiải pháp dựa trên khác .


1
Trong OS X, là top -o cpu -n 5một cách để đạt được điều tương tự. Có ai biết không? My topkhác với bạn top.
boehj

Bạn là người có đỉnh cao khác nhau nên bạn sẽ có thể nói. Đầu trang của tôi không có -o-nđặt số lần nó làm mới màn hình trước khi thoát.
Caleb

Đủ công bằng. Tôi sẽ nhận được một hộp Linux chiều nay và xem xét. Tôi topdường như không có chế độ hàng loạt, điều này khá hạn chế. Phải có một số cách đường ống topvào các lệnh khác. Tôi sẽ làm một số nghiên cứu.
boehj

Tôi đã đề cập đến công tắc chế độ hàng loạt trong câu trả lời của mình nhưng thực sự không cần thiết cho đầu trang của tôi vì nó tự động phát hiện là một phần của đường ống thay vì phiên tương tác. Bạn đã thử chỉ đường ống mà không có điều đó?
Caleb

1
Sẽ làm. GNU toplàm việc như mô tả chiều nay. Chúc mừng.
boehj

6

Nhanh nhất một lớp lót tôi đã tìm thấy cho điều này (lưu ý 6 vì tiêu đề cộng lại):

ps aux k-pcpu | head -6

5

Lưu ý rằng các phiên bản hiện tại của ps có khả năng sắp xếp bên trong chúng, dựa trên mã trường (được đưa ra trong trang ps man). Mã trường để sử dụng bộ xử lý là "c". Bạn có thể sử dụng --sort cở cuối lệnh ps, vdps aux --sort c

Điều này sẽ đặt quá trình sử dụng hầu hết các cpu ở cuối danh sách. Thứ tự đảo ngược của danh sách bằng cách thêm một dấu trừ vào mã trường được sử dụng để sắp xếp, ví dụps aux --sort -c


4

Để thêm một điểm vào các câu trả lời có giá trị khác, tôi thích:

ps auxk-c | head -6

Nó cũng in tiêu đề, đó là tốt đẹp.

Ở đây kgiống hệt --sortcchỉ định trường sử dụng CPU (bí danh %cpu) để sắp xếp, trong khi đó -là sắp xếp ngược lại.

Bạn có thể thêm specifiers phân cách bằng ,, specifiers khác có thể là: %mem, args, bsdstart, pid, gid, uid... mà bạn có thể tìm thấy danh sách đầy đủ tại TIÊU CHUẨN specifiers FORMAT phần của trang người đàn ông. Ví dụ:

 ps auxk -gid,-%mem | head -11

sẽ in 10 tiến trình với id nhóm cao nhất, được sắp xếp bên trong theo mức sử dụng bộ nhớ.


3

Công cụ dòng lệnh pscó tùy chọn sắp xếp riêng, vì vậy tôi thích:

$ ps -eo pcpu,args --sort=-%cpu | head

Bạn có thể thêm các cột bạn muốn. Xem những tùy chọn khác có sẵn thông qua pstrang người đàn ông.

$ man ps

0

toptrên Mac OS X có tùy chọn chế độ ghi nhật ký ở dạng top -l numberOfSamples(có vẻ tương đương với chế độ hàng loạt của GNU top). Tuy nhiên, cần có ít nhất hai mẫu vì "mẫu đầu tiên được hiển thị sẽ có% CPU không hợp lệ được hiển thị cho mỗi quy trình, vì nó được tính bằng cách sử dụng delta giữa các mẫu" ( man 1 top).

# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6

0

topsẽ hiển thị những gì đang sử dụng CPU của bạn. Nếu bạn đã cài đặt nó, htopcho phép bạn kiểm soát chi tiết hơn, bao gồm lọc bằng cách sử dụng CPU trong trường hợp CPU CPU của bạn.


0

Tôi tin rằng cách đơn giản nhất để xem 5 quy trình tiêu thụ cpu hàng đầu là,

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

Để xem 5 quá trình tiêu thụ bộ nhớ hàng đầu là,

ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5

Ở đâu,

-e : Cờ này được sử dụng để chọn tất cả quá trình

-o : Cờ này được sử dụng để định dạng dưới dạng người dùng xác định.

pid : Đối số này được sử dụng để hiển thị pid

comm: Đối số này được sử dụng để chỉ hiển thị tên lệnh. Để có được lệnh sử dụng đầy đủ args, cmdhoặccommand

%cpu: Đối số này cho thấy tỷ lệ sử dụng cpu của quy trình ở định dạng "##. #". Ở đây pcpucũng có thể được sử dụng.

%mem: Đối số này hiển thị tỷ lệ kích thước cài đặt thường trú của quy trình với bộ nhớ vật lý trên máy, được biểu thị bằng phần trăm. Ở đây pmemcũng có thể được sử dụng.

--sort: Chỉ định thứ tự sắp xếp. Sau =những -dấu hiệu được sử dụng để sắp xếp giá trị cao nhất ở phía trên nơi tùy chọn mặc định đó là +là lập danh sách số thứ tự tăng [tức là từ 0 đến n].


-2

top -bn1 |sed -n '7,12'plàm việc như một lót nhỏ đẹp quá.
Mặc dù tôi thích sử dụng ps với --sort = X -o X, Y, Z

bằng cách sử dụng ps, bạn có thể kéo các số liệu thống kê grep khác nhau cho một quá trình HOẶC người dùng và sau đó tổng OR hoặc sử dụng chúng với một đường ống để awk.

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.