linux处理删除占用的文件导致空间未释放的问题

今天收到监控报警,一台SDK服务器空闲空间不足10%,于是查看了一下,看看有没有能清理的文件,在检查时,执行

lsof |grep deleted

时发现,有个mysql的慢日志文件被删除了,但是空间没有释放,大约14G空间:加粗样式
在这里插入图片描述
经判断,应该是谁发现了slow.log 占用了大量空间,在释放空间时,直接rm 删除了这个文件。
下面要做的就是释放掉空间,最直接办法就是重启占用这个文件的进程,不过这上面有重要的业务,非必要不能重启进程。于是想到用truncate命令来把文件截断成0字节。
1.找到mysqld的进程id,就ps aux|grep mysqld就可以了。我们找到的是2316
2.查看文件描述符:

 ls -lh /proc/2316/fd |grep slow.log

得到:

 root root 64 May  5 12:57 18 -> /data/mysql/3306/slow.log

3.截断文件:

truncate -s 0 /proc/2316/fd/18 

这样空间就释放了。不过数据库目录下的slow.log其实仍然是删除状态,并且仍然被占用,表现就是数据库目录下没有slow.log
4.接下来就是执行sql语句:

set global slow_query_log_file='/data/mysql/3306/slow1.log';
set global slow_query_log_file='/data/mysql/3306/slow.log';

这样slow.log就出来了,然后把slow1.log删掉。

不过操作到这里,突然想到,其实没必要搞这么麻烦,直接执行那两句sql语句,应该就能解决问题了。不过前面的方法,更通用一些。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值