#!/bin/bash
log_time() {
date '+%F %T'
}
dm_pid=$(pgrep -f dmserver | head -n1)
if [ -z "$dm_pid" ]; then
echo "$(log_time) 错误:未找到 dmserver 进程!" >&2
exit 1
fi
dm_exe=$(readlink -f "/proc/$dm_pid/exe" 2>/dev/null)
if [ ! -f "$dm_exe" ]; then
echo "$(log_time) 错误:无法获取 dmserver 可执行文件路径!" >&2
exit 1
fi
DMDIR=$(dirname "$(dirname "$dm_exe")")
DMLOGDIR="$DMDIR/log"
if [ ! -d "$DMLOGDIR" ]; then
echo "$(log_time) 错误:日志目录不存在:$DMLOGDIR" >&2
exit 1
fi
echo "$(log_time) 检测到达梦安装目录: $DMDIR"
echo "$(log_time) 日志目录: $DMLOGDIR"
last_month=$(date -d "last month" +%Y%m)
echo "$(log_time) 目标:清理上个月($last_month)的日志文件..."
deleted_count=0
while IFS= read -rd '' logfile; do
echo "$(log_time) 删除: $logfile"
rm -f "$logfile"
((deleted_count++))
done < <(find "$DMLOGDIR" -type f -name "*${last_month}*.log" -print0)
if [ $deleted_count -gt 0 ]; then
echo "$(log_time) 成功删除 $deleted_count 个上个月($last_month)的日志文件。"
else
echo "$(log_time) 未找到上个月($last_month)的日志文件,无需清理。"
fi
exit 0
[root@host-lpmogo log]# bash clean_dm_last_month_logs.sh
2025-09-27 21:42:58 检测到达梦安装目录: /dm8/dmdba/dmdbms
2025-09-27 21:42:58 日志目录: /dm8/dmdba/dmdbms/log
2025-09-27 21:42:59 目标:清理上个月(202508)的日志文件...
2025-09-27 21:42:59 删除: /dm8/dmdba/dmdbms/log/dm_DM1_202508.log
2025-09-27 21:42:59 删除: /dm8/dmdba/dmdbms/log/dm_BAKRES_202508.log
2025-09-27 21:42:59 删除: /dm8/dmdba/dmdbms/log/dm_dmap_br_202508.log
2025-09-27 21:42:59 删除: /dm8/dmdba/dmdbms/log/dm_dmap_202508.log
2025-09-27 21:42:59 成功删除 4 个上个月(202508)的日志文件。
# 编辑定时任务
crontab -e
0 2 2 * * /bin/bash /home/dmdba/clean_dm_last_month_logs.sh >> /home/dmdba/dm_clean.log 2>&1
文章
阅读量
获赞