我在寫一個小工具,我需要找到每個用戶的文件系統內存使用情況。如何查找每個用戶的磁盤空間使用情況?
如果文件系統使用率超過某個閾值,我必須執行一些清理活動。我可以使用哪些系統調用,以便能夠查找每個用戶的內存使用情況?
我在寫一個小工具,我需要找到每個用戶的文件系統內存使用情況。如何查找每個用戶的磁盤空間使用情況?
如果文件系統使用率超過某個閾值,我必須執行一些清理活動。我可以使用哪些系統調用,以便能夠查找每個用戶的內存使用情況?
也許你有興趣磁盤配額(它們受某些(但不是全部)文件系統的支持)。底層系統調用是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)系統調用。
請記住,其他進程可以(並且經常)寫入文件系統,而程序正在探索或查詢它。
我的問題是,當我運行'quota'時,我得到'操作不允許'。爲什麼?也許這是因爲它試圖查看所有用戶的配額,而我只被允許(和感興趣)在我的。 – 2015-04-29 20:33:46
一個簡單的方法是
du -shc /home/*
對它進行排序:
du -smc /home/* | sort -n
還有一個衆所周知的Perl腳本,爲每用戶郵件的磁盤使用情況報告的選項:durep
爲什麼標籤pthreads? – 2012-02-13 11:47:45
看看du的來源吧。 – 2012-02-13 11:48:20
內存使用情況?磁盤!=內存 – sehe 2012-02-13 13:26:24