2012-02-13 70 views
7

我在寫一個小工具,我需要找到每個用戶的文件系統內存使用情況。如何查找每個用戶的磁盤空間使用情況?

如果文件系統使用率超過某個閾值,我必須執行一些清理活動。我可以使用哪些系統調用,以便能夠查找每個用戶的內存使用情況?

+0

爲什麼標籤pthreads? – 2012-02-13 11:47:45

+1

看看du的來源吧。 – 2012-02-13 11:48:20

+1

內存使用情況?磁盤!=內存 – sehe 2012-02-13 13:26:24

回答

0

也許你有興趣磁盤配額(它們受某些(但不是全部)文件系統的支持)。底層系統調用是quotactl(2)。也許使用現有的工具quota(1)quotacheck,edquota,warnquota, quotaon等......可能就足夠了。

如果您想知道給定進程使用的內存,請考慮系統調用getrusage(2)。您還可以閱讀僞文件/proc/self//proc/1234下PID 1234瞭解更多關於proc(5)(如/proc/self/maps/proc/1234/smaps等)

當然,還要考慮du(1)df(1)命令(也許調用它們仔細popen(3)如果你想得到他們的輸出)。如果出於任何原因想要遞歸掃描文件樹(例如,計算其累積使用大小,如du那樣),請考慮使用nftw(3)函數。另請參閱stat(2)statfs(2)系統調用。

請記住,其他進程可以(並且經常)寫入文件系統,而程序正在探索或查詢它。

+0

我的問題是,當我運行'quota'時,我得到'操作不允許'。爲什麼?也許這是因爲它試圖查看所有用戶的配額,而我只被允許(和感興趣)在我的。 – 2015-04-29 20:33:46

相關問題