加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 如何在不重新启动引用进程的情况下恢复已删除文件的可用

发布时间:2020-12-15 18:39:43 所属栏目:安全 来源:网络整理
导读:在服务器上删除大文件时,进程可能仍会引用这些文件,因此文件系统没有更多可用空间. 我试图使用lsof,但它似乎没有列出已删除的文件. fuser -c做得更好,但是进程列表太长,无法检查每个进程,特别是因为每个进程都是Oracle进程. bash-3.2# fuser -c /var/var: 10
在服务器上删除大文件时,进程可能仍会引用这些文件,因此文件系统没有更多可用空间.

我试图使用lsof,但它似乎没有列出已删除的文件. fuser -c做得更好,但是进程列表太长,无法检查每个进程,特别是因为每个进程都是Oracle进程.

bash-3.2# fuser -c /var
/var:      105o   29999o   20444c    3528c   27258o    7715o    3864o    3862o    2494o   18205o   17450co   17445co   14912co   14824co   14818co   14816o   14814o    8532c    8530c    7633com    7118o    6958o    6790c    6784co    6734o    6693o    6689o    6684o    6675o    6635o    6594c    6548o    6547o    6546o    6545o    6544o    6543o    6542o    6541o    6540o    6537o    6535o    6456o    6128co    6113o     335o     245co     229o     161o       8o
bash-3.2# du -hs /proc
 139T   /proc

有时会发生文件被应用程序或用户删除,例如一个日志文件,并且该文件仍然被无法重新启动的进程引用.

是否有货物方法来回收已删除文件上的磁盘空间而不重新启动具有对此已删除文件的引用的进程?

find /proc/*/fd -ls 2> /dev/null | grep '(deleted)'

找到所有打开的文件描述符.

Grep已删除.

StdError为/ dev / null

输出:

160448715    0 lrwx------   1 user      user            64 Nov 29 15:34 /proc/28680/fd/113 -> /tmp/vteT3FWPX (deleted)

或者你可以使用awk

find / proc / * / fd -ls 2> / dev / null | awk’/ deleted / {print $11}’;

awk输出(在bash Ubuntu 12.04中测试):

/proc/28680/fd/113

查找并截断所有已删除的文件(在bash Ubuntu 12.04中测试):

(如果你不知道你做了什么,请不要这样做)

find /proc/*/fd -ls 2> /dev/null | awk '/deleted/ {print $11}' | xargs -p -n 1 truncate -s 0

执行truncate之前的-p提示符

更好的方法是手动截断

手动截断:

: > /proc/28680/fd/113

要么:

> /proc/28680/fd/113

要么:

truncate -s 0 /proc/28680/fd/113

请享用

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读