Câu trả lời:
Tại sao sử dụng ps
khi bạn có thể làm điều đó dễ dàng với top
lệ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"
ps aux | sort -nrk 3,3 | head -n 5
top
thực sự hoạt động.
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
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, ps
khô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
bash
(x2, hoặc head
là tốt) ps
...
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.
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)
Tôi không nghĩ ps
là 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 ps
giải pháp dựa trên khác .
top -o cpu -n 5
một cách để đạt được điều tương tự. Có ai biết không? My top
khác với bạn top
.
-o
và -n
đặt số lần nó làm mới màn hình trước khi thoát.
top
dườ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 top
vào các lệnh khác. Tôi sẽ làm một số nghiên cứu.
top
làm việc như mô tả chiều nay. Chúc mừng.
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
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
Để 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 k
giống hệt --sort
và c
chỉ đị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ớ.
Công cụ dòng lệnh ps
có 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 ps
trang người đàn ông.
$ man ps
top
trê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
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
, cmd
hoặccommand
%cpu
: Đối số này cho thấy tỷ lệ sử dụng cpu của quy trình ở định dạng "##. #". Ở đây pcpu
cũ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 pmem
cũ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].