it-swarm-vi.com

Làm thế nào để tìm quá trình nào đang chiếm hết bộ nhớ?

Tôi đang tìm kiếm một cái gì đó giống như hàng đầu là sử dụng CPU. Có một đối số dòng lệnh cho đầu mà làm điều này? Hiện tại, bộ nhớ của tôi đã đầy đến mức ngay cả 'người đàn ông hàng đầu' cũng không thể hết bộ nhớ :)

87
ripper234

Từ bên trong top bạn có thể thử các cách sau:

  • Nhấn SHIFT+f
  • Nhấn chữ tương ứng với% MEM
  • Nhấn ENTER

Bạn cũng có thể thử:

$ ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

Điều này sẽ cung cấp cho 5 quá trình hàng đầu bằng cách sử dụng bộ nhớ.

107
Steven D

Nếu bạn đã cài đặt, tôi thích htop một khi khởi chạy, bạn có thể nhấn f6down arrow (đến MEM%), enter để sắp xếp theo bộ nhớ.

11
xenoterracide

Khi top bắt đầu, nhấn F để chuyển sang màn hình trường sắp xếp. Chọn một trong các trường được liệt kê bằng cách nhấn phím được liệt kê ở bên trái; bạn có thể muốn N cho MEM%

7
Michael Mrozek

Trong Solaris, lệnh bạn cần là:

prstat -a -s size

Điều này sẽ liệt kê tất cả các quy trình theo thứ tự kích thước hình ảnh quá trình giảm dần. Lưu ý rằng cái sau dựa trên bộ nhớ được HĐH cam kết xử lý, chứ không phải sử dụng bộ nhớ vật lý thường trú của nó.

Có những phiên bản được cho là "hàng đầu" có sẵn cho Solaris, nhưng đây không phải là một phần của bản cài đặt tiêu chuẩn.

6
Joel Hoff

Một thay thế Nice cho tophtop. Kiểm tra nó, nó thân thiện với người dùng hơn nhiều so với hàng đầu thông thường.

5
Klark

Nó có thể đạt được bằng nhiều cách, Cách yêu thích của tôi là:

Cách PS :

  1. [[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort=-%mem

    Ở đâu,

    • -e: để chọn tất cả quá trình
    • -o: để áp dụng cho định dạng đầu ra
    • pid, cmd, %cpu, %mem: Định dạng đầu ra theo thứ tự chính xác. Tại đây, pcpupmem có thể được sử dụng thay vì %cpu%mem.
    • Nhưng thật đáng buồn (không biết tại sao) nó không hoạt động trên một số máy (Oracle Linux) và một số máy cũ hơn. Bạn có thể sử dụng các lựa chọn thay thế tương tự sau đây.
  2. [[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort -rss

    Ở đâu,

    • -rss: kích thước cài đặt thường trú, bộ nhớ vật lý không tráo đổi mà tác vụ đã sử dụng
  3. [[email protected] ~]$ ps --cols 120 aux --sort -rss

    Ở đâu,

    • --cols 100: để chỉ định độ rộng cột của đầu ra vì đôi khi cmd rất dài. Điều này là không cần thiết nếu bạn không muốn các lệnh bị hạn chế với các đối số.
    • aux: để xem mọi quy trình trên hệ thống bằng cú pháp BSD

Cách hàng đầ:

[[email protected] ~]$ top -b -o +%MEM

Ở đâu,

  • -b: để sử dụng chế độ top dưới dạng batch.
  • -o: để ghi đè tên trường sắp xếp theo sau là tên trường %MEM

Và bạn luôn có thể sử dụng head và/hoặc tail để kiểm soát đầu ra.

1
muhammad

Lệnh này sẽ xác định các quá trình tiêu thụ bộ nhớ hàng đầu:

ps -A --sort -rss -o pid,pmem:40,cmd:500 | head -n 6 | tr -s " " ";z"
1
user90191

Globally : Luôn luôn nên sử dụng công cụ phân tích nhật ký để ghi nhật ký lịch sử như Splunk, ELK, v.v ... Vì vậy, bằng cách sử dụng ngôn ngữ truy vấn, bạn có thể dễ dàng lấy được PID và sử dụng CPU và bộ nhớ.

AT SERVER/OS LEVEL : Từ trên xuống, bạn có thể thử các cách sau:

 Press SHIFT+M  ---> This will give you a process which takes more memory in descending order.

Bạn cũng có thể thử:

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10

Điều này sẽ cung cấp cho 10 quá trình hàng đầu bằng cách sử dụng bộ nhớ. Ngoài ra, bạn có thể sử dụng tiện ích vmstat để tìm RAM sử dụng cùng lúc không dành cho lịch sử.

0
Santosh Garole

Bạn co thể thử ps aux --sort -rss | head hoặc là ps aux | sort -nk +4 | tail

0
David Okwii