如何在 Linux 下快速找到被刪除的文件?
點(diǎn)擊上方藍(lán)色“小哈學(xué)Java”,選擇“設(shè)為星標(biāo)” 回復(fù)“資源”獲取獨(dú)家整理的學(xué)習(xí)資料!
但有的時(shí)候,會(huì)出現(xiàn)怎么也查不到大文件的情況,通過(guò) du 查找的時(shí)候,統(tǒng)計(jì)出來(lái)的大小,跟 df 顯示的占用空間對(duì)應(yīng)不上。
如果通過(guò) df -i 查看inode沒(méi)有滿的話,那么極有可能,是有大文件被直接rm了,但是仍然有進(jìn)程打開(kāi)了這個(gè)文件。
這種情況,由于進(jìn)程沒(méi)有退出,因此文件占用的空間并不會(huì)釋放;直到進(jìn)程退出,磁盤(pán)空間才會(huì)真正釋放。
如何找到是哪個(gè)進(jìn)程打開(kāi)了該文件
Linux上,由于進(jìn)程仍然存活,因此可以通過(guò)查看所有進(jìn)程打開(kāi)的 fd,如果該文件已經(jīng)被刪除,則查看時(shí),會(huì)顯示(deleted)。
示例如下:
$?sudo?find?/proc/*/fd?-ls?|?grep??'(deleted)'
???388609??????0?lrwx------???1?zerotier-one?zerotier-one???????64?Aug?21?00:19?/proc/29400/fd/4?->?/tmp/ibpX85Vd\?(deleted)
???388610??????0?lrwx------???1?zerotier-one?zerotier-one???????64?Aug?21?00:19?/proc/29400/fd/5?->?/tmp/ibCwAgAj\?(deleted)
???388611??????0?lrwx------???1?zerotier-one?zerotier-one???????64?Aug?21?00:19?/proc/29400/fd/6?->?/tmp/ibRZ5rep\?(deleted)
???388612??????0?lrwx------???1?zerotier-one?zerotier-one???????64?Aug?21?00:19?/proc/29400/fd/7?->?/tmp/ibBuNEzA\?(deleted)
???388616??????0?lrwx------???1?zerotier-one?zerotier-one???????64?Aug?21?00:19?/proc/29400/fd/11?->?/tmp/ibG68kpG\?(deleted)
如何避免這種情況
不要直接刪除該文件,而是通過(guò)將文件 truncate 的方式,釋放磁盤(pán)空間。
一種方式是:
cat?/dev/null?>?${filename}
或者(新get!)
:?>?${filename}
如此,可以快速釋放空間。
參考文檔
Find and remove large files that are open but have been deleted
本文轉(zhuǎn)載自:「Zlatan Eevee」,原文:https://tinyurl.com/y89mq5oq

2.?Spring 中的重試機(jī)制,簡(jiǎn)單、實(shí)用!
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。
謝謝支持喲 (*^__^*)


