Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
U
ubains-module-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
郑晓兵
ubains-module-test
Commits
d52be3a9
提交
d52be3a9
authored
3月 02, 2026
作者:
PGY
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(scripts): 添加检测已删除进程的脚本及更新配置文档
上级
666bc596
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
62 行增加
和
0 行删除
+62
-0
check_deleted_file_ubains.sh
自动化部署脚本/x86架构/预定系统/定时脚本/check_deleted_file_ubains.sh
+62
-0
配置说明
自动化部署脚本/x86架构/预定系统/定时脚本/配置说明
+0
-0
没有找到文件。
自动化部署脚本/x86架构/预定系统/定时脚本/check_deleted_file_ubains.sh
0 → 100644
浏览文件 @
d52be3a9
#!/bin/bash
echo
"==============================================="
echo
" Linux 已删除但仍被占用文件排查工具 (内核直读版)"
echo
"==============================================="
echo
-e
"
\n
🔍 正在扫描被删除但仍被进程占用的文件...
\n
"
total_size
=
0
found_count
=
0
# 遍历所有进程的 fd 目录
for
fd_path
in
/proc/[0-9]
*
/fd/
*
;
do
# 检查是否为符号链接且指向已删除文件
if
[
-L
"
$fd_path
"
]
&&
ls
-l
"
$fd_path
"
2>/dev/null |
grep
-q
"(deleted)"
;
then
# 提取 PID 和 FD
pid
=
$(
echo
"
$fd_path
"
|
cut
-d
'/'
-f3
)
fd
=
$(
echo
"
$fd_path
"
|
cut
-d
'/'
-f5
)
# 获取原始文件路径
target_file
=
$(
readlink
"
$fd_path
"
)
# 获取进程名
if
[
-f
"/proc/
$pid
/comm"
]
;
then
proc_name
=
$(
cat
"/proc/
$pid
/comm"
)
else
proc_name
=
"unknown"
fi
# 获取文件大小 (通过 stat 命令获取该 fd 对应的大小)
# 注意:对于已删除文件,直接 stat fd 路径是获取该文件大小最准确的方法
size_bytes
=
$(
stat
-L
-c
%s
"
$fd_path
"
2>/dev/null
||
echo
0
)
if
[
"
$size_bytes
"
-gt
0
]
||
[[
"
$target_file
"
==
*
"
$TARGET_KEY
"
*
]]
;
then
found_count
=
$((
found_count
+
1
))
total_size
=
$((
total_size
+
size_bytes
))
size_mb
=
$(
echo
"scale=2;
$size_bytes
/ 1024 / 1024"
| bc
)
echo
"--------------------------------------------------"
printf
"进程: %-15s | PID: %-8s | FD: %-5s
\n
"
"
$proc_name
"
"
$pid
"
"
$fd
"
printf
"占用: %-10s MB | 文件: %s
\n
"
"
$size_mb
"
"
$target_file
"
fi
fi
done
if
[
"
$found_count
"
-eq
0
]
;
then
echo
"✅ 未发现被占用的已删除文件,磁盘空间正常。"
else
total_mb
=
$(
echo
"scale=2;
$total_size
/ 1024 / 1024"
| bc
)
total_gb
=
$(
echo
"scale=2;
$total_size
/ 1024 / 1024 / 1024"
| bc
)
echo
"=================================================="
printf
"总共被删除但未释放的空间:%.2f MB (%.2f GB)
\n
"
"
$total_mb
"
"
$total_gb
"
echo
"=================================================="
fi
echo
-e
"
\n
📌 处理建议:"
echo
"1) 重启占用文件的进程即可释放空间(推荐)"
echo
"2) 或执行: kill -9 <PID>"
echo
"3) 若为日志文件,建议检查日志轮转策略(如 logrotate 是否配置了 copytruncate)"
echo
-e
"
\n
🎉 扫描完成。
\n
"
自动化部署脚本/x86架构/预定系统/定时脚本/配置说明
浏览文件 @
d52be3a9
此差异已折叠。
点击以展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论