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


linux里的文件被刪除后,空間沒有被釋放是因為在Linux系統中,通過rm或者文件管理器刪除文件將會從文件系統的目錄結構上解除鏈接(unlink).然而如果文件是被打開的(有一個進程正在使用),那么進程將仍然可以讀取該文件,磁盤空間也一直被占用。
解決方法:
1、先df -lh查看一下磁盤使用狀況
2、找到被刪除文件所在的分區,eg.opt分區
3、查看被刪除了的所有文件: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)
4、kill 8195
5、再運行lsof -n /opt |grep delete,應該沒上面的結果了。
6、再運行df -lh看是不是空間已經釋放了?

 

快速刪除大文件

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

# > access.log

 

2.使用 : 符號

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

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

 

4. 使用 echo 命令清空文件

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

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

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

# echo -n "" > access.log

 

 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM