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 请享用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |