本文介绍: linux磁盘空间已满,手动rm –rf 删除了大文件之后,df –h 查看一下发现空间占用还是不变,有时候会想rm –rf 删除只是逻辑删除到回收站一样?其实不然,通常这种情况都是文件被删除,但是还被进程占用,因此删除文件空间未释放通常的建议是kill 掉对应的进程,但是如果是生成环境,不能轻易kill进程的话,可以通过置空文件的方式来释放空间通过lsof | grep deleted 找到未能删除掉的文件,确定占用的进程号。
前言
linux磁盘空间已满,手动rm –rf 删除了大文件之后,df –h 查看一下发现空间占用还是不变,有时候会想rm –rf 删除只是逻辑删除到回收站一样?其实不然,通常这种情况都是文件被删除,但是还被进程占用,因此删除文件空间未释放
通常的建议是kill 掉对应的进程
,但是如果是生成环境,不能轻易kill进程的话,可以通过置空文件
的方式来释放空间
通过lsof | grep deleted 找到未能删除掉的文件,确定占用的进程号
通过 ls -l /proc/PID/fd/* | grep 文件名,找到相应文件句柄
清除文件内容 echo > /proc/PID/fd/FD_NUM
此操作不会删除文件,而是将文档内容清空的方法释放空间,文件仍存在
1. 查看当前磁盘占用情况
首先查看磁盘占用,然后创建了一个5GB的文件,然后继续查看磁盘占用,可以看到磁盘可用已经减少了5GB
# 查看磁盘占用
df -h
# 创建1个5000MB的文件
dd if=/dev/zero of=/delete.tmp bs=1000MB count=5
2. 模拟进程占用
tail -f /delete.tmp
3. 执行rm –rf 命令删除文件
下图可以看到,由于文件被占用,执行删除命令成功后仍然没有释放空间
# 查看磁盘占用
df -h
# 删除创建文件
rm -f /delete.tmp
# 查看磁盘占用
df -h
4. 查看被删除但是未释放空间的文件
通过执行以下命令,可以看到tail 进行占用了delete.tmp文件,文件大小5GB
lsof | grep deleted
5. 执行清空文件操作
语法:
# 通过PID查看文件句柄
ll /proc/PID/fd | grep delete.tmp
# 将指定进程下文件句柄的文件置空
echo > /proc/PID/fd/文件句柄
示例:
# 查看pid为17271的文件句柄
ll /proc/17271/fd | grep delete.tmp
# 置空文件
echo > /proc/17271/fd/3
原文地址:https://blog.csdn.net/qq_29864051/article/details/131337429
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_32754.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。