一台linux分区使用率告警,同事为了清理空间,通过du -sh *查到应用的日志文件占用很高,他直接rm删除了日志文件。但df -h看分区空间并没有释放。
执行lsof | grep delete可以看到刚刚删除的文件因为被正在运行的进程调用所以并没有释放磁盘空间。并且业务实时性较高,不能重启进程释放文件。
记录调用文件的进程pid,进入/proc/pid/fd
ll | grep delete可以看到未释放的文件链接,前面的数字是链接文件编号fid,可以通过echo > fid 清空。
同样的方式也可以找到被误删的文件内容。