Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
U
ubains-module-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
郑晓兵
ubains-module-test
Commits
62d99bce
提交
62d99bce
authored
3月 17, 2026
作者:
PGY
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(文档): 更新定时任务配置说明文档
上级
e190f249
展开全部
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
0 行增加
和
101 行删除
+0
-101
clean_deleted_ubains_v2.sh
自动化部署脚本/x86架构/预定系统/定时脚本/clean_deleted_ubains_v2.sh
+0
-101
配置说明
自动化部署脚本/x86架构/预定系统/定时脚本/配置说明
+0
-0
配置说明.md
自动化部署脚本/x86架构/预定系统/定时脚本/配置说明.md
+0
-0
没有找到文件。
自动化部署脚本/x86架构/预定系统/定时脚本/clean_deleted_ubains_v2.sh
deleted
100644 → 0
浏览文件 @
e190f249
#!/bin/bash
# ================= 配置区域 =================
TARGET_KEY
=
"ubains-INFO-AND-ERROR"
MIN_SIZE
=
$((
1024
*
1024
*
1024
))
# 1GB (单位:字节)
LOG_FILE
=
"/var/log/scripts/auto_clean_deleted_ubains.log"
MAX_LOG_SIZE
=
$((
5
*
1024
*
1024
))
# 5MB 日志大小限制
LOG_RETENTION_DAYS
=
7
# 日志保留天数
CONTAINER_NAME
=
"ujava2"
# 容器名称
# ===========================================
# 日志函数
log
()
{
echo
"[
$(
date
'+%Y-%m-%d %H:%M:%S'
)
]
$*
"
|
tee
-a
"
$LOG_FILE
"
}
# 日志轮转
rotate_logs
()
{
if
[
-f
"
$LOG_FILE
"
]
;
then
FILE_SIZE
=
$(
stat
-c
%s
"
$LOG_FILE
"
)
if
[
"
$FILE_SIZE
"
-ge
"
$MAX_LOG_SIZE
"
]
;
then
mv
"
$LOG_FILE
"
"
$LOG_FILE
.
$(
date
'+%Y%m%d%H%M%S'
)
"
touch
"
$LOG_FILE
"
log
"日志文件超过 5MB,已自动轮转。"
fi
fi
# 修改为在日志文件所在目录查找备份文件
find
"
$(
dirname
"
$LOG_FILE
"
)
"
-name
"auto_clean_deleted_ubains.log.*"
-mtime
+
$LOG_RETENTION_DAYS
-exec
rm
-f
{}
\;
}
rotate_logs
log
"==============================================="
log
"开始扫描:检测 deleted 大文件并自动清理 (内核直读版)"
log
"匹配关键字:
$TARGET_KEY
"
log
"大于尺寸: 1GB"
log
"==============================================="
FOUND
=
0
NEED_RESTART
=
0
# 遍历所有进程的 fd 目录,寻找匹配关键字且标记为 deleted 的文件
for
fd_path
in
/proc/[0-9]
*
/fd/
*
;
do
# 检查是否为符号链接且指向包含关键字的已删除文件
if
[
-L
"
$fd_path
"
]
;
then
target_file
=
$(
readlink
"
$fd_path
"
2>/dev/null
)
if
[[
"
$target_file
"
==
*
"(deleted)"
*
]]
&&
[[
"
$target_file
"
==
*
"
$TARGET_KEY
"
*
]]
;
then
FOUND
=
1
# 提取 PID 和 FD
pid
=
$(
echo
"
$fd_path
"
|
cut
-d
'/'
-f3
)
fd
=
$(
echo
"
$fd_path
"
|
cut
-d
'/'
-f5
)
# 获取进程名
proc_name
=
"unknown"
[
-f
"/proc/
$pid
/comm"
]
&&
proc_name
=
$(
cat
"/proc/
$pid
/comm"
)
# 获取文件大小 (字节) - 使用 stat -L 获取链接指向的实际文件状态
size_bytes
=
$(
stat
-L
-c
%s
"
$fd_path
"
2>/dev/null
||
echo
0
)
size_mb
=
$((
size_bytes
/
1024
/
1024
))
log
"-----------------------------------------------"
log
"发现匹配文件:"
log
"进程:
$proc_name
"
log
"PID:
$pid
"
log
"FD:
$fd
"
log
"文件:
$target_file
"
log
"大小:
$size_mb
MB"
if
[
"
$size_bytes
"
-ge
"
$MIN_SIZE
"
]
;
then
log
"⚠ 文件超过1GB,执行自动处理。"
log
"➡ 杀死进程 PID:
$pid
"
kill
-9
"
$pid
"
2>/dev/null
sleep
1
NEED_RESTART
=
1
else
log
"⏩ 文件不足 1GB,跳过。"
fi
fi
fi
done
if
[
"
$FOUND
"
-eq
0
]
;
then
log
"未发现匹配的 deleted 文件。"
fi
if
[
"
$NEED_RESTART
"
-eq
1
]
;
then
log
"➡ 检测到大文件进程已处理,统一重启 docker 容器:
$CONTAINER_NAME
"
# 检查 docker 命令是否存在
if
command
-v
docker
>
/dev/null 2>&1
;
then
docker restart
"
$CONTAINER_NAME
"
>>
"
$LOG_FILE
"
2>&1
log
"✔ Docker 容器重启完成。"
else
log
"❌ 错误: 未找到 docker 命令,请手动重启容器。"
fi
else
log
"无需重启 docker 容器。"
fi
log
"🎉 执行结束。"
log
"==============================================="
自动化部署脚本/x86架构/预定系统/定时脚本/配置说明
deleted
100644 → 0
浏览文件 @
e190f249
此差异已折叠。
点击以展开。
自动化部署脚本/x86架构/预定系统/定时脚本/配置说明.md
0 → 100644
浏览文件 @
62d99bce
此差异已折叠。
点击以展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论