2012-02-13 28 views
7

Tôi đang viết một công cụ nhỏ, trong đó tôi yêu cầu phải tìm cách sử dụng bộ nhớ hệ thống cho mỗi người dùng.cách tìm mức sử dụng không gian đĩa cho mỗi người dùng?

Tôi phải thực hiện một số hoạt động dọn dẹp nếu việc sử dụng hệ thống tệp vượt quá giá trị ngưỡng nhất định. Cuộc gọi hệ thống mà tôi có thể sử dụng là gì, để tôi có thể tìm thấy mức sử dụng bộ nhớ của mỗi người dùng?

+0

lý do thẻ bị pthread? –

+1

Nhìn vào nguồn của du. –

+1

sử dụng bộ nhớ? disk! = memory – sehe

Trả lời

0

Có thể bạn quan tâm đến hạn ngạch đĩa (được hỗ trợ bởi một số, nhưng không phải tất cả, hệ thống tệp). Cuộc gọi hệ thống cấp thấp là quotactl(2). Có thể sử dụng các công cụ hiện có quota(1)quotacheck, edquota, warnquota, quotaon vv .... có thể là đủ.

Nếu bạn muốn biết bộ nhớ được sử dụng bởi một quy trình nhất định, hãy xem xét tòa nhà chọc trời getrusage(2). Bạn cũng có thể đọc giả-tác phẩm dưới /proc/self/ hoặc /proc/1234 cho pid 1234. Tìm hiểu về hơn proc(5) (ví dụ /proc/self/maps hoặc /proc/1234/smaps vv)

Tất nhiên, cũng xem xét du(1)df(1) lệnh (có lẽ gọi họ cẩn thận thru popen(3) nếu bạn muốn có được đầu ra của họ). Nếu vì bất kỳ lý do gì bạn muốn quét đệ quy cây tệp (ví dụ: để tính kích thước được sử dụng tích lũy của nó như là du), hãy xem xét sử dụng các hàm nftw(3). Xem thêm stat(2)statfs(2) syscalls.

Hãy nhớ rằng các quy trình khác có thể (và thường làm) ghi vào hệ thống tệp trong khi chương trình của bạn đang khám phá hoặc truy vấn nó.

+0

Vấn đề của tôi là khi tôi chạy 'quota', tôi nhận được một' hoạt động không được phép'. Tại sao vậy? Có lẽ đó là bởi vì nó đang cố gắng để xem hạn ngạch của tất cả người dùng, trong khi tôi chỉ được phép (và quan tâm) trong tôi. –

Các vấn đề liên quan