Linux 刪除文件未釋放空間問題處理,下清空或刪除大文件

linux裏的文件被刪除後,空間沒有被釋放是由於在Linux系統中,經過rm或者文件管理器刪除文件將會從文件系統的目錄結構上解除連接(unlink).然而若是文件是被打開的(有一個進程正在使用),那麼進程將仍然能夠讀取該文件,磁盤空間也一直被佔用。
解決方法:
一、先df -lh查看一下磁盤使用情況
二、找到被刪除文件所在的分區,eg.opt分區
三、查看被刪除了的全部文件:lsof -n /opt |grep deleted
 結果以下:[root@test app]# lsof -n /opt |grep delete
 sftp-serv  8195      root    5r   REG  104,6 8214888448 786452 /opt/software/resin-pro-3.1.10/log/jvm-app-a.log (deleted)
四、kill 8195
五、再運行lsof -n /opt |grep delete,應該沒上面的結果了。
六、再運行df -lh看是否是空間已經釋放了?linux

 

快速刪除大文件

1. 經過重定向到 Null 來清空文件內容清空或者讓一個文件成爲空白的最簡單方式,是像下面那樣,經過 shell 重定向 null (不存在的事物)到該文件:shell

# > access.logapp

 

2.使用 : 符號jvm

使用 : 符號,它是 shell 的一個內置命令,等同於 true 命令,它可被用來做爲一個 no-op(即不進行任何操做)。另外一種清空文件的方法是將 : 或者 true 內置命令的輸出重定向到文件中,具體以下:.net

# : > access.log # true > access.logblog

 

4. 使用 echo 命令清空文件進程

在這裏,你可使用 echo命令 將空字符串的內容重定向到文件中,具體以下:字符串

# echo "" > access.log 或者 # echo > access.logget

注意:你應該記住空字符串並不等同於 null 。字符串代表它是一個具體的事物,只不過它的內容多是空的,但 null 則意味着某個事物並不存在。基於這個緣由,當你將 echo命令 的輸出做爲輸入重定向到文件後,使用cat命令來查看該文件的內容時,你將看到一個空白行(即一個空字符串)。要將 null 作爲輸出輸入到文件中,你應該使用 -n 選項,這個選項將告訴 echo 再也不像上面的那個命令那樣輸出結尾的那個新行。test

# echo -n "" > access.log

 

 

 

Linux 下清空或刪除大文件/大量文件的幾種方法

相關文章
相關標籤/搜索