Câu hỏi Làm thế nào tôi có thể giám sát việc sử dụng bộ nhớ?


tôi đã sử dụng top để xem mức sử dụng bộ nhớ tại thời điểm này. Nhưng tôi muốn theo dõi việc sử dụng bộ nhớ trong một khoảng thời gian. Ví dụ: bắt đầu theo dõi và sau đó thực hiện một vài lệnh, và cuối cùng ngừng theo dõi và xem có bao nhiêu bộ nhớ đã được sử dụng trong thời gian này.

Làm thế nào tôi có thể làm điều này trên Ubuntu Server?

Tôi đoán tôi có thể bắt đầu một cronjob mỗi 5 giây hoặc lâu hơn, và gọi một lệnh đăng nhập sử dụng bộ nhớ hiện tại trong một textfile. Nhưng tôi nên sử dụng lệnh nào để sử dụng bộ nhớ hiện tại ở định dạng dễ dàng đăng nhập vào một tệp văn bản?


235
2017-10-26 16:50


gốc




Các câu trả lời:


Tôi khuyên bạn nên kết hợp các câu trả lời trước

watch -n 5 free -m

Lưu ý rằng Linux thích sử dụng bất kỳ bộ nhớ bổ sung nào bộ nhớ cache khối ổ cứng. Vì vậy, bạn không muốn chỉ xem miễn phí Mem. Bạn muốn nhìn vào free cột của -/+ buffers/cache: hàng. Điều này cho thấy có bao nhiêu bộ nhớ có sẵn cho các ứng dụng. Vì vậy, tôi chỉ cần chạy free -m và nhận được điều này:

             total       used       free     shared    buffers     cached
Mem:          3699       2896        802          0        247       1120
-/+ buffers/cache:       1528       2170
Swap:         1905         62       1843

Tôi biết rằng tôi đang sử dụng 1528 MB và có 2170 MB miễn phí.

Chú thích: Để ngăn chặn điều này watch chu kỳ bạn chỉ có thể nhấn Ctrl+C.


290
2017-10-26 17:40



Cảm ơn, đó là thông tin. Nhưng trên cột được sử dụng trước tiên bạn có 2896 và sau đó 1528 cho bộ đệm, điều này không có nghĩa là bạn đang sử dụng 2896 + 1528? - Jonas
Mem: used là tổng bộ nhớ đã sử dụng của bạn. -/+ buffers/cache: used là tổng số bộ nhớ đã sử dụng của bạn dấu trừ bộ đệm và bộ nhớ cache. Tôi biết đầu ra có vẻ buồn cười, nhưng không yêu cầu số học ở đây. Bạn chỉ đang tìm kiếm được sử dụng / miễn phí trong hàng - / + bộ đệm / bộ nhớ cache. - Justin Force
Tùy chọn -h rất đẹp - frmdstryr
@frmdstryr Điểm tốt! -h / - con người không tồn tại khi tôi viết cái này. gitlab.com/procps-ng/procps/commit/… - Justin Force
@ cbradsh1 Bạn chỉ có thể làm free -h, ví dụ. watch -n 5 free -h để có được kết quả "có thể đọc được" của con người, ví dụ: 2.1G thay vì 2170 trong đầu ra. - Justin Force


Tôi nghĩ htop là giải pháp tốt nhất.

  • sudo apt-get install htop

Bằng cách này bạn sẽ nhận thấy chương trình nào đang sử dụng phần lớn RAM. và bạn có thể dễ dàng chấm dứt một nếu bạn muốn. Đây là một ảnh chụp màn hình!


192
2018-05-18 00:11



htop là tốt đẹp bởi vì nó "đồ họa" hơn và có thể dễ đọc hơn free. - mjswensen
tôi không hiểu đầu ra. Là RES bộ nhớ được sử dụng bởi ứng dụng đó trong MB? THÌ là gì SHR? - faizal
@faizal: bộ nhớ ảo, dành riêng và chia sẻ. - WitchCraft
làm thế nào htop cho bạn thấy 'việc sử dụng bộ nhớ trong một khoảng thời gian'? - dangel
htop -s M_SHARE htop-TIME - Tomachi


Nếu bạn tìm kiếm một phân tích tốt đẹp về bộ nhớ được sử dụng bởi mỗi quá trình chạy, thì tôi có thể khuyên bạn nên kiểm tra ps_mem.py (tìm đây tại pixelbeat.org).

Tôi biết trong các ý kiến ​​ở trên, bạn đã đề cập muốn có một ảnh chụp nhanh một dòng từ miễn phí, nhưng tôi nghĩ rằng những người khác có thể thấy điều này hữu ích.

Ví dụ đầu ra:

user@system:~$ sudo ps_mem.py
[sudo] password for user:
 Private  +   Shared  =  RAM used       Program

  4.0 KiB +   7.5 KiB =  11.5 KiB       logger
  4.0 KiB +   8.0 KiB =  12.0 KiB       mysqld_safe
  4.0 KiB +  10.0 KiB =  14.0 KiB       getty
  4.0 KiB +  42.0 KiB =  46.0 KiB       saslauthd (5)
 48.0 KiB +  13.0 KiB =  61.0 KiB       init
 56.0 KiB +  27.5 KiB =  83.5 KiB       memcached
 84.0 KiB +  26.5 KiB = 110.5 KiB       cron
120.0 KiB +  50.0 KiB = 170.0 KiB       master
204.0 KiB + 107.5 KiB = 311.5 KiB       qmgr
396.0 KiB +  94.0 KiB = 490.0 KiB       tlsmgr
460.0 KiB +  65.0 KiB = 525.0 KiB       rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB       sudo
476.0 KiB +  83.0 KiB = 559.0 KiB       monit
568.0 KiB +  60.0 KiB = 628.0 KiB       freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB       pickup
  1.1 MiB +  80.0 KiB =   1.2 MiB       bash
  1.4 MiB + 308.5 KiB =   1.7 MiB       fail2ban-server
888.0 KiB +   1.0 MiB =   1.9 MiB       sshd (3)
  1.9 MiB +  32.5 KiB =   1.9 MiB       munin-node
 13.1 MiB +  86.0 KiB =  13.2 MiB       mysqld
147.4 MiB +  36.5 MiB = 183.9 MiB       apache2 (7)
---------------------------------
                        208.1 MiB
=================================

 Private  +   Shared  =  RAM used       Program

Phần duy nhất tôi không thích là thực tế là kịch bản tuyên bố yêu cầu quyền root. Tôi chưa có cơ hội để xem chính xác tại sao lại như thế.


38
2017-10-26 17:19



Tôi tự hỏi liệu bộ nhớ có được chia sẻ giữa các chủ đề hay không. Nó được chia sẻ giữa các quá trình, phải không? Ít nhất là trên Windows ... - Thomas Weller
Vì vậy, trường hợp này, bộ nhớ dùng chung đề cập đến các trang được ánh xạ bởi nhiều quy trình dưới dạng các thư viện được chia sẻ. Ngoài ra trong bối cảnh của một ứng dụng đa luồng toàn bộ không gian bộ nhớ quá trình có thể truy cập bởi tất cả các chủ đề trong quá trình đó. - Jason Mock
Hiện đã có trong PyPI (pip install ps_mem) và trên GitHub. - Leif Arne Storset
@ThomasWeller: Có, chủ đề luôn chia sẻ bộ nhớ, trong khi các quy trình có thể chia sẻ một số hoặc tất cả các chủ đề trong một số điều kiện nhất định. - Leif Arne Storset
cho điều này tôi sử dụng gnome-system-monitor - jms


Sử dụng miễn phí chỉ huy. Ví dụ, đây là ouput của free -m:

             total       used       free     shared    buffers     cached
Mem:          2012       1666        345          0        101        616
-/+ buffers/cache:        947       1064
Swap:         7624          0       7624

free -m | grep /+ sẽ chỉ trả lại dòng thứ hai:

-/+ buffers/cache:        947       1064

22
2017-10-26 17:27



Cảm ơn, trông rất tuyệt. Vì vậy, điều này 947 sử dụng bộ nhớ là gì trừ bộ nhớ được sử dụng cho bộ đệm và bộ đệm? - Jonas


Các đồng hồ đeo tay lệnh có thể hữu ích. Thử watch -n 5 free để theo dõi việc sử dụng bộ nhớ với các bản cập nhật sau mỗi năm giây.


9
2018-01-19 20:09



Cảm ơn, điều này thật tuyệt! Tuy nhiên, tôi muốn sử dụng bộ nhớ trên một dòng, vì vậy thật dễ dàng để đăng nhập vào một tệp văn bản. - Jonas


Để theo dõi trực quan việc sử dụng RAM tổng thể, nếu bạn sử dụng Byobu, nó sẽ giữ cho việc sử dụng bộ nhớ của bạn ở góc dưới bên phải của thiết bị đầu cuối và sẽ chạy trong khi bạn đang ở trong bất kỳ phiên đầu cuối nào.

Như bạn có thể thấy từ ảnh chụp màn hình, máy ảo của tôi có thời gian hoạt động 1h3m, 0,00 tải, có bộ xử lý 2.8GHz (ảo) và 994MB (21%) RAM có sẵn trên hệ thống.

Byobu in use


4
2018-04-16 19:15





Bạn có thể làm điều đó bằng cách sử dụng cat /proc/meminfo.

enter image description here


3
2017-09-27 13:30



thêm đồng hồ vào mặt trước của lệnh này làm cho nó tuyệt vời! như trong watch cat /proc/meminfo - Elder Geek
Các free lệnh lấy thông tin từ /proc/meminfo và trình bày chúng một cách gọn gàng. Sử dụng free -h cho đầu ra có thể đọc được. - LoMaPh


Giải pháp và đầu ra dòng đơn:

free -m | grep "Mem:"

Dưới đây là ví dụ về kết quả mong đợi:

enter image description here


3
2017-10-26 18:01



Điều này cũng sẽ cho phép bạn xem việc sử dụng bộ nhớ tại thời điểm này ... - mook765


tôi sẽ dùng Cacti. Điều này sẽ vẽ đồ thị sử dụng bộ nhớ của bạn, vv trong một khoảng thời gian, và bạn sẽ có thể kiểm tra việc sử dụng bằng cách sử dụng trình duyệt web của bạn.


1
2017-10-22 15:32