释放已删除空间资源

查看已删除文件

当遇到df 和du 看到的磁盘空间不一致的时候,大概率是因为文件句柄未释放的情况下,文件被删除;我们可以通过下面命令来查看:

lsof |grep deleted

这些就是已删除文件 

服务可停的情况

如果服务可以停止,可以用下面命令查看占用已删除的线程,并将其kill来释放磁盘资源

lsof |grep deleted   | awk '{print $2}' | uniq | xargs kill -9

如果线上服务,且服务不可停止,则采用下面方法来实现
 

不停服清理已删除文件

Centos清理

#!/bin/sh
if ! [ -x "$(command -v lsof)" ]; then
  echo 'lsof is not installed begin to install' >&2
  yum install -y install lsof
fi
fdnum=$(lsof |grep delete|grep export|awk 'NR==1{print $2}')
if [ ! $fdnum ];then
   echo 'lsof |grep delete|grep export|awk ...is null' >&2
return ;
fi

cd /proc/$fdnum/fd
filehd=$(ls -l|grep export|grep deleted|awk '{print $9}')
ARR=$filehd
echo "clean....";
echo $ARR
for element in $ARR;do
    echo $element;
        echo "0" > $element
done

Ubuntu清理

#!/bin/sh
if ! [ -x "$(command -v lsof)" ]; then
  echo 'lsof is not installed begin to install' >&2
  yum install -y install lsof
fi
fdnum=$(lsof |grep delete|grep export|awk 'NR==1{print $2}')
if [ ! $fdnum ];then
   echo 'lsof |grep delete|grep export|awk ...is null' >&2
return ;
fi

cd /proc/$fdnum/fd
filehd=$(ls -l|grep export|grep deleted|awk '{print $9}')
ARR=$filehd
echo "clean....";
echo $ARR
for element in $ARR;do
    echo $element;
        echo "0" > $element
done;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值