公眾號關注「奇妙的Linux世界」
設為「星標」linux刪除資料夾中標linux,每晚帶你玩Linux!
#日常運維過程中,我們常常必須要處理c盤空間問題linux刪除資料夾,當接到警告後,第一時間會去找這些大文件,通常例如Centos,可能大文件就是/var/log /messages。
但有的時侯,會出現怎樣也查不到大文件的情況,透過du查找的時侯,統計下來的大小,跟df顯示的佔用空間對應不上。
假如透過df-i查看inode沒有滿的話,這麼極有可能,是有大檔案被直接rm了,並且一直有進程打開了這個檔案。
#這些情況,因為進程沒有退出,因而檔案佔用的空間並不會釋放;直至進程退出,c盤空間才能真正釋放。
怎麼找到是那個進程打開了該檔案
Linux上,因為進程依舊存活,因而可以透過查看所有進程打開的fd,假如該檔案早已被刪掉,則查看時,會顯示(deleted)。
範例如下:
#
<span></span><code style="padding: 16px;color: #ddd;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;padding-top: 15px;background: #272822;border-radius: 5px">$ sudo find /proc/*/fd -ls | grep <span style="color: #a6e22e;line-height: 26px">'(deleted)'</span><br> 388609 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/4 -> /tmp/ibpX85Vd (deleted)<br> 388610 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/5 -> /tmp/ibCwAgAj (deleted)<br> 388611 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/6 -> /tmp/ibRZ5rep (deleted)<br> 388612 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/7 -> /tmp/ibBuNEzA (deleted)<br> 388616 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/11 -> /tmp/ibG68kpG (deleted)<br></code>
怎麼避開這些狀況
不要直接刪除該檔案linux刪除資料夾,而是透過將檔案truncate的方法,釋放c碟空間。
一種方法是:
<span></span><code style="padding: 16px;color: #ddd;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;padding-top: 15px;background: #272822;border-radius: 5px">cat /dev/null > <span style="color: #a6e22e;line-height: 26px">${filename}</span><br></code>
或則(新get!)
<span></span><code style="padding: 16px;color: #ddd;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;font-size: 12px;padding-top: 15px;background: #272822;border-radius: 5px">: > <span style="color: #a6e22e;line-height: 26px">${filename}</span><br></code>
這麼,可以快速釋放空間。
參考文件
Findandremovelargefilesthatareopenbuthavebeendeleted
####以上是(星標)如何避免大檔案被直接rm了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!