在linux中,當(dāng)我們使用rm在linux上刪除了大文件,但是如果有進(jìn)程打開了這個(gè)大文件,卻沒有關(guān)閉這個(gè)文件的句柄,那么linux內(nèi)核還是不會(huì)釋放這個(gè)文件的磁盤空間,最后造成磁盤空間占用100%,整個(gè)系統(tǒng)無(wú)法正常運(yùn)行。這種情況下,通過(guò)df和du命令查找的磁盤空間,兩者是無(wú)法匹配的,可能df顯示磁盤100%,而du查找目錄的磁盤容量占用卻很小。
遇到這種情況,基本可以斷定是某些大文件被某些程序占用了,并且這些大文件已經(jīng)被刪除了,但是對(duì)應(yīng)的文件句柄沒有被某些程序關(guān)閉,造成內(nèi)核無(wú)法回收這些文件占用的空間。
那么,如何查找那些文件被某些程序占用呢,命令如下
lsof -n | grep deleted
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
dd 31708 higkoo 1w REG 8,2 5523705856 429590 /data/filetest (deleted)
命令打lsof -n | grep deleted印出所有針對(duì)已刪除文件的讀寫操作,這類操作是無(wú)效的,也正是磁盤空間莫名消失的根本原因
備注:本人遇到的場(chǎng)景是同事刪除了mysql的表,但是是在shell上執(zhí)行rm表的文件,而不是通過(guò)drop table之類的命令去刪除表的,于是mysql會(huì)一直占用這些表文件的句柄,最后造成磁盤空間100%,這種情況下,也不用重啟mysql,只要進(jìn)入mysql客戶端執(zhí)行flush tables就行了。
以上這篇Linux磁盤空間被未知資源耗盡的解決方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- linux下部署kodexplorer的方法
- Linux 服務(wù)器分區(qū)及掛載
- linux上配置jdk時(shí),java命令提示沒有此文件或文件夾的解決方法
- Linux查找占用的端口,并殺死進(jìn)程的方法
- Linux 出現(xiàn)telnet: 127.0.0.1: Connection refused錯(cuò)誤解決辦法