1. 程式人生 > >linux下磁盤占用達到100%了,找不到哪些大文件耗盡了磁盤。

linux下磁盤占用達到100%了,找不到哪些大文件耗盡了磁盤。

read line -m 判斷 restart -i 字節數 什麽 -exec bin

Linux下的根分區使用率100%,但是查看/分區下的目錄都不大,沒有占用滿,這該怎麽處理?
重啟是肯定有效的,目前處理情況:重新restart應用後,空間釋放出來
1、lsof | grep deletd
2、reboot 重啟
linux下磁盤占用達到100%了,找不到哪些大文件耗盡了磁盤。
Linux下使用df -lh
查看磁盤時:
/dev/sda1 130G 123G 353M 100%
/
磁盤快用盡了,
但我這邊就是查找不到具體是哪些大文件占用的。
1、如果是大文件占用了,那麽查詢大於某個值的文件的方法:
find / -size +100c -print
這是從根盤開始查找大於 100字節的文件(至於字節數你當然可以自己設置)
你可以用 find / -size +100c -exec ls -l {}\; 來列出文件屬性。
2、如果只是因為有些應用生成的日誌文件較多,長時間沒有清理後占用了,這種情況最明顯的標誌為系統空間使用量逐步遞增,每天的增量基本相差不大。那麽最快捷的方式莫過於詢問應用廠商要到日誌存放目錄後進行清理。如果找不到廠商,那只好自己動手咯,寫個腳本查:
#!/bin/ksh
用du命令輸出所有目錄所占的磁盤空間大小,以G為單位
du -h >fs_du.log
判斷各層目錄大小,查到占用量大的目錄
cat fs_du.log|while read LINE FS_USED
do
if
[ LINE?ge10]thenecho

FS_USED >>result.log
else
exit
fi
done
查看運行結果
more result.log
這樣你就能看到占用量比較大的目錄,從而有針對性的到相應目錄下檢查,看到底是什麽東西在占用硬盤空間了。
(if [ $LINE -ge 10 ] 這裏是判斷超過10G的目錄,你可以修改)
3、因為人為的誤操作,導致了某些進程在沒有執行完成的時候被kill掉了,但是緩存中的程序沒有釋放,仍然在運行,這會產生一些臨時文件占用大量的磁盤空間資源,這種現象的特點是爆發式的增長,在很短時間內就將磁盤空間占滿。解決的方法:
1、如果是因為父進程被殺除,子進程還運行導致,那麽最簡單,kill子進程,就會釋放。
2、如果能用ipcs確認是哪個用戶的進程,那麽也不困難,順著使用ipcrm就行(這個就不一一例舉了,有了命令查使用方法還是很方便的)
3、執行進程的用戶是比較關鍵的用戶如:root用戶、有實例的oracle用戶、在線的生產用戶等。那麽建議在確認是因為共享緩存的原因導致的問題後重啟服務器。
4、你已經刪除了一些占用量大的文件,或者在根盤下做
du -h
發現占用量遠遠的小於130G,df的結果仍然是100%的使用率。那麽基本肯定你碰到了linux的一個bug,直接重啟就能解決。(當然了也不一定是bug,我碰到過那種程序在寫一個日誌,但是刪除日誌後空間不釋放的問題。這個是linux本身的機制引起的,只需要停止相關的程序空間就會釋放的)其實並不是你的磁盤的空間被占用,而是你的磁盤的節點耗盡了。使用:
df -i /dev/sdbx(x為邏輯分區)
命令查看i節點情況。
解決辦法:刪除占用i節點的空文件,
命令:
rm -rf / -empty -a -type f
/opt 分區被web日誌堆滿了,導致一些服務無法正常運行,於是rm -rf掉這些日誌(近11GB),但是服務仍沒有恢復正常,用df -hT看,該分區占用還是100%:
[root@anjing opt]# df -hT
但是用 du -sh /opt命令,看到:
[root@anjing /]# du -sh /opt/
8.3G /opt/
應該是刪除了這些文件,但是空間沒有釋放,當然重啟可以解決目的,但是會造成服務器上所有業務中斷,可使用下面命令查看刪除文件占用情況:
[root@anjing opt]# lsof |grep delete

linux下磁盤占用達到100%了,找不到哪些大文件耗盡了磁盤。