前言
linux磁盤空間已滿,手動rm -rf 刪除了大文件之后,df -h 查看一下發(fā)現(xiàn)空間占用還是不變,有時候會想rm -rf 刪除只是邏輯刪除到回收站一樣?其實不然,通常這種情況都是文件被刪除,但是還被進(jìn)程占用,因此刪除文件空間未釋放
通常的建議是kill 掉對應(yīng)的進(jìn)程
,但是如果是生成環(huán)境,不能輕易kill進(jìn)程的話,可以通過置空文件
的方式來釋放空間
通過lsof | grep deleted 找到未能刪除掉的文件,確定占用的進(jìn)程號
通過 ls -l /proc/PID/fd/* | grep 文件名,找到相應(yīng)文件句柄
清除文件內(nèi)容 echo > /proc/PID/fd/FD_NUM
此操作不會刪除文件,而是將文檔內(nèi)容清空的方法釋放空間,文件仍存在
1. 查看當(dāng)前磁盤占用情況
首先查看磁盤占用,然后創(chuàng)建了一個5GB的文件,然后繼續(xù)查看磁盤占用,可以看到磁盤可用已經(jīng)減少了5GB
# 查看磁盤占用
df -h
# 創(chuàng)建1個5000MB的文件
dd if=/dev/zero of=/delete.tmp bs=1000MB count=5
2. 模擬進(jìn)程占用
這里使用tail -f 命令對文件進(jìn)行占用
tail -f /delete.tmp
3. 執(zhí)行rm -rf 命令刪除文件
下圖可以看到,由于文件被占用,執(zhí)行刪除命令成功后仍然沒有釋放空間
# 查看磁盤占用
df -h
# 刪除創(chuàng)建文件
rm -f /delete.tmp
# 查看磁盤占用
df -h
4. 查看被刪除但是未釋放空間的文件
通過執(zhí)行以下命令,可以看到tail 進(jìn)行占用了delete.tmp文件,文件大小5GB
lsof | grep deleted
5. 執(zhí)行清空文件操作
語法:
# 通過PID查看文件句柄
ll /proc/PID/fd | grep delete.tmp
# 將指定進(jìn)程下文件句柄的文件置空
echo > /proc/PID/fd/文件句柄
示例:文章來源:http://www.zghlxwxcb.cn/news/detail-530308.html
# 查看pid為17271的文件句柄
ll /proc/17271/fd | grep delete.tmp
# 置空文件
echo > /proc/17271/fd/3
文章來源地址http://www.zghlxwxcb.cn/news/detail-530308.html
到了這里,關(guān)于Linux下 文件刪除但是空間未被釋放 或者 磁盤已滿但找不到對應(yīng)的大文件 的解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!