2011-09-02 11 views
10

tôi muốn xem một quá trình được đưa ra trong unix theo thời gian để xem những gì bộ nhớ thời gian phát triển (một công việc chạy dài của nó)làm thế nào để theo dõi một cách sử dụng bộ nhớ quá trình theo thời gian - ubuntu

Tôi đoán tôi có thể làm

ps -aux | grep PID 

và chạy ứng dụng này từ cron cứ 5 phút một lần, nhưng có vẻ như có cách nào tốt hơn.

Có cách nào tôi có thể sử dụng sar để thực hiện việc này không?

+0

câu hỏi của bạn thuộc về ubuntu hoặc superuser –

+0

Tôi đã suy nghĩ về điều này, nhưng từ quan điểm của nhà phát triển và vấn đề phát triển của nó, quá trình của tôi bị rò rỉ bộ nhớ, không phải là SA .... Tôi đoán tôi có thể thử trên đó, nhưng có vẻ như có liên quan trên cả hai ... – Joelio

+2

Bản sao của http://stackoverflow.com/questions/563168/monitor-a-programs-memory-usage-in-linux? Cũng đề nghị sử dụng 'top' với các tùy chọn' -p -b -d'. – Iterator

Trả lời

21

tôi sử dụng này:

$ ps -o rss $(pgrep executablename) 

Đặt rằng trong một vòng lặp while hoặc sử dụng đồng hồ để giám sát theo thời gian cùng với đuôi. Bạn cũng có thể đánh dấu nó vào một tập tin và có gnuplot vẽ nó cho bạn và làm mới mỗi vài giây.

+0

Câu trả lời không đúng. RSS không sử dụng bộ nhớ. – poige

+1

@poige, ý của bạn là gì? - RSS Kích thước bộ nhớ thực (bộ thường trú) tính bằng kilobyte của quy trình. Con số này bằng tổng của số lượng phân đoạn làm việc và các trang phân đoạn mã trong thời gian bộ nhớ 4. Hãy nhớ rằng các trang phân đoạn mã được chia sẻ giữa tất cả các phiên bản hiện đang chạy của chương trình. Nếu các tiến trình 26 ksh đang chạy, chỉ một bản sao của bất kỳ trang nào của chương trình thực thi ksh sẽ có trong bộ nhớ, nhưng lệnh ps sẽ báo cáo kích thước phân đoạn mã như một phần của RSS của mỗi cá thể của chương trình ksh. – Joelio

+0

Quá trình có thể được hoán đổi (phân trang) một phần, và RSS của nó sẽ ít hơn, thực sự. – poige