Câu trả lời:
AFAIK bạn không thể đạt được nó chỉ bằng pslệnh thuần túy với các tùy chọn. Tuy nhiên, bạn có thể sử dụng một số bộ xử lý văn bản như awkvà làm cho nó để làm những gì bạn muốn:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
Điều này nhận kết quả từ psvà sau đó cho mỗi dòng ngoại trừ dòng đầu tiên nó thay thế cột thứ 5 trong KB thông thường, để MB thêm hậu tố M.
Bạn có thể biến nó thành bí danh và lưu trữ nó trong tệp .bashrc để bạn có thể gọi nó bằng một cái gì đó như myps.
Hầu hết mọi người đang hỏi làm thế nào để bảo tồn định dạng hoặc sử dụng các đơn vị và độ chính xác khác.
Đối với phiên bản đơn giản, bạn có thể sử dụng column -tbộ lọc đầu ra:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}' | column -t
Điều này tuy nhiên không nhận ra không gian trong cột cuối cùng một cách chính xác. Thật không may, chúng tôi đã phải đối phó với định dạng văn bản và chuẩn bị chuỗi printfđịnh dạng giống như định dạng của chúng tôi .
ps afu | awk 'NR==1 {o=$0; a=match($0,$11);}; NR>1 {o=$0;$5=int(10*$5/1024)/10"M";}{ printf "%-8s %6s %-5s %-5s %9s %9s %-8s %-4s %-6s %-5s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, substr(o, a);}'
Giải trình:
NR==1điều kiện chỉ dành cho dòng đầu tiên (tiêu đề). Chúng tôi đang sử dụng đầu ra ps ban đầu để xác định nơi bắt đầu điều khiển:
o=$0 lưu trữ toàn bộ dòng chưa sửa đổi để chúng tôi có thể sử dụng nó saua=match($0,$11) tìm vị trí của trường thứ 11 (phải là nơi cột LỆNH đang bắt đầu ở đầu ra ban đầu)NR>1dành cho các dòng sau (dữ liệu). Chúng tôi đang thay đổi lĩnh vực thứ 5:
$5=int(10*$5/1024)/10"M" thay đổi giá trị thành Megabyte với một chữ số thập phân và thêm hậu tố "M".%-10scó nghĩa là scho chuỗi, 10cho 10 ký tự, -cho căn lề trái%8scó nghĩa là scho chuỗi, 8cho 8 ký tự rộng và do không có -đầu ra của trường này được căn phải.substr(o, a)lấy chuỗi con của dòng gốc (do đó ođược lưu trữ trước đó) bắt đầu từ vị trí được atính trong điều kiện trước đó, vì vậy chúng ta có thể có đầu ra lệnh được hiển thị với các khoảng trắng được bảo toàn.1.23GB):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
psđịnh dạng? Các tab hoàn toàn bị loại bỏ vớiawk
man psgợi ý cho tôi rằng không có tùy chọn tích hợp như vậy.