公众号关注「奇妙的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中文网其他相关文章!