❶ linux下磁碟佔用達到100%了,怎樣查找是哪些大文件耗盡了磁碟
樓上的各位,麻煩你們回答問題的時候看清楚別人問的是什麼好吧?
1、如果是大文件佔用了,那麼查詢大於某個值的文件的方法:
find / -size +100c -print
這是從根盤開始查找大於100位元組的文件(至於位元組數你當然可以自己設置)
你可以用
find / -size +100c -exec ls -l {}\;
來列出文件屬性。
2、如果只是因為有些應用生成的日誌文件較多,長時間沒有清理後佔用了,這種情況最明顯的標志為系統空間使用量逐步遞增,每天的增量基本相差不大。那麼最快捷的方式莫過於詢問應用廠商要到日誌存放目錄後進行清理。如果找不到廠商,那隻好自己動手咯,寫個腳本查:
#!/bin/ksh
#####用命令輸出所有目錄所佔的磁碟空間大小,以G為單位#########
-h >fs_.log
######判斷各層目錄大小,查到佔用量大的目錄######
cat fs_.log|while read LINE FS_USED
do
if [ $LINE -ge 10 ]
then
echo $FS_USED >>result.log
else
exit
fi
done
####查看運行結果#######
more result.log
這樣你就能看到佔用量比較大的目錄,從而有針對性的到相應目錄下檢查,看到底是什麼東西在佔用硬碟空間了。(if [ $LINE -ge 10 ] ,這里是判斷超過10G的目錄,你可以修改)
3、因為人為的誤操作,導致了某些進程在沒有執行完成的時候被kill掉了,但是緩存中的程序沒有釋放,仍然在運行,這會產生一些臨時文件佔用大量的磁碟空間資源,這種現象的特點是爆發式的增長,在很短時間內就將磁碟空間占滿。解決的方法:
i、如果是因為父進程被殺除,子進程還運行導致,那麼最簡單,kill子進程,就會釋放。
ii、如果能用ipcs確認是哪個用戶的進程,那麼也不困難,順著使用ipcrm就行(這個就不一一例舉了,有了命令查使用方法還是很方便的)
iii、執行進程的用戶是比較關鍵的用戶如:root用戶、有實例的oracle用戶、在線的生產用戶等。那麼建議在確認是因為共享緩存的原因導致的問題後重啟伺服器。
4、你已經刪除了一些佔用量大的文件,或者在根盤下做 -h發現佔用量遠遠的小於130G,df的結果仍然是100%的使用率。那麼基本肯定你碰到了linux的一個bug,直接重啟就能解決。(當然了也不一定是bug,我碰到過那種程序在寫一個日誌,但是刪除日誌後空間不釋放的問題。這個是linux本身的機制引起的,只需要停止相關的程序空間就會釋放的)