排查Linux根目录文件总占用小,但磁盘空间使用率高的问题

已删除的文件,如果有相关进程仍在run,就不会自动释放,需要手动重启下。

手搓了个脚本,排查有哪些文件,需要重启哪些进程。

在root下创建showNoFreeDeletedFiles.sh​文件,并执行,就能看到了

echo '==================== deleted files ===================='
# 提取每个进程的已删除文件信息(这里的$8在gpt说应该是$7,但我的系统用$8才对的上)
deleted_files=$(lsof | grep deleted | awk '{print $2 "    |    " $8 / 1024 / 1024 " MB    |    " $10}')

# 输出已删除文件信息
echo "$deleted_files"
echo '==================== pid info ===================='

# 遍历每个唯一的 PID
for pid in $(lsof | grep deleted | awk '{print $2}' | sort -u); do
    echo "PID: $pid"
  
    # 统计该 PID 的已删除文件总大小
    total_size=$(echo "$deleted_files" | grep "^$pid" | awk '{sum += $3} END {print sum}')
  
    # 输出进程信息
    ps -ef | grep "$pid" | grep -v grep
    echo "Total size of deleted files for PID $pid: $total_size MB"
    echo "-------------------------"
done

echo '==================== end ===================='

结果如下(ps:这是我清理后执行的,所以很少),重启相关的应用就可以了。

image

文章作者: 安浩阳
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 安浩阳
踩坑记录
喜欢就支持一下吧