当前位置: 首页 > news >正文

gbase8s之message log rotate

以下是一个实现gbase8s日志轮转的Shell脚本,支持参数化配置执行频率、日志路径和保留数量:

#!/bin/bash
# 描述:Informix消息日志轮转脚本
# 作者:Generated by AI
# 日期:$(date +%Y-%m-%d)
# 版本:1.0# 默认配置参数
DEFAULT_LOG_PATH=`onstat -g cfg|grep MSGPATH|awk '{print $2}'`
DEFAULT_RETAIN=52
DEFAULT_SCHEDULE="daily"  # 可选:daily, weekly, monthly# 使用帮助
usage() {echo "用法: $0 [选项]"echo "选项:"echo "  -p, --logpath PATH   日志文件路径 (默认: $DEFAULT_LOG_PATH)"echo "  -r, --retain NUM     保留的日志数量 (默认: $DEFAULT_RETAIN)"echo "  -s, --schedule FREQ  执行频率 [daily|weekly|monthly] (默认: $DEFAULT_SCHEDULE)"echo "  -h, --help           显示帮助信息"exit 1
}# 解析命令行参数
while [[ $# -gt 0 ]]; docase "$1" in-p|--logpath)LOG_PATH="$2"shift 2;;-r|--retain)RETAIN="$2"shift 2;;-s|--schedule)SCHEDULE="$2"shift 2;;-h|--help)usage;;*)echo "错误: 未知选项 $1"usage;;esac
done# 设置默认值
: ${LOG_PATH:=$DEFAULT_LOG_PATH}
: ${RETAIN:=$DEFAULT_RETAIN}
: ${SCHEDULE:=$DEFAULT_SCHEDULE}# 验证保留数量
if ! [[ "$RETAIN" =~ ^[0-9]+$ ]]; thenecho "错误: 保留数量必须是整数"exit 1
fi# 执行日志轮转函数
rotate_log() {echo "$(date +'%Y-%m-%d %H:%M:%S') - 开始日志轮转: $LOG_PATH (保留: $RETAIN)"dbaccess sysadmin <<EOF 2>&1EXECUTE FUNCTION task("message log rotate", "$LOG_PATH", $RETAIN);
EOFif [ $? -eq 0 ]; thenecho "$(date +'%Y-%m-%d %H:%M:%S') - 日志轮转成功完成"elseecho "$(date +'%Y-%m-%d %H:%M:%S') - 错误: 日志轮转失败" >&2exit 1fi
}# 根据计划执行
case "$SCHEDULE" indaily)rotate_log;;weekly)# 仅在周六执行 (0-6, 0=周日, 6=周六)if [ $(date +%u) -eq 6 ]; thenrotate_logelseecho "$(date +'%Y-%m-%d %H:%M:%S') - 跳过执行 (周计划设置为周六执行)"fi;;monthly)# 仅在每月1号执行if [ $(date +%d) -eq 1 ]; thenrotate_logelseecho "$(date +'%Y-%m-%d %H:%M:%S') - 跳过执行 (月计划设置为每月1号执行)"fi;;*)echo "错误: 不支持的计划频率 '$SCHEDULE'"usage;;
esac

使用说明

  1. 基本用法

./rotate_log.sh

  • 使用默认参数执行日志轮转

     2.自定义参数

./rotate_log.sh --logpath /data/informix/ol.log --retain 30 --schedule weekly
  1. 配置选项

    • -p/--logpath:指定Informix日志路径

    • -r/--retain:设置保留的日志数量

    • -s/--schedule:设置执行频率(daily/weekly/monthly)

设置定时任务(cron)

  1. 每日执行(默认):

# 每天凌晨2点执行
0 2 * * * /path/to/rotate_log.sh

每周执行

# 每周六凌晨3点执行
0 3 * * 6 /path/to/rotate_log.sh -s weekly

每月执行

# 每月1号凌晨4点执行
0 4 1 * * /path/to/rotate_log.sh -s monthly

注意事项

  1. 执行权限

chmod +x rotate_log.sh

online.log

  • 原始日志文件会被重命名为.1.2等后缀

http://www.xdnf.cn/news/973531.html

相关文章:

  • 计算机网络面试汇总(完整版)
  • 【网络】每天掌握一个Linux命令 - iftop
  • 中和农信创新引领“三农“金融服务新模式
  • docker详细操作--未完待续
  • XSS攻击和CSRF攻击
  • TF-IDF算法详解与实践总结
  • 逆向--进阶
  • C++ 标准模板库(STL)详解文档
  • 关于前端常用的部分公共方法(三)
  • 【数字图像处理】基于Python语言的玉米小斑病图像分析
  • 鹰盾加密器“一机一码”技术全维度剖析:从底层实现到生态防护体系
  • 微信小程序抓包(burp + proxifier)
  • 卡方检验(χ²检验)
  • python打卡day50@浙大疏锦行
  • 1.1 ROS1应用商店APT源
  • 全国大学生计算机应用能力与数字素养大赛 C语言程序设计赛项——本科组练习
  • plc开篇学习。
  • maven依赖冲突解决
  • JAVA(Day_2)
  • 5g LDPC编译码-LDPC编码
  • Win系统下的Linux系统——WSL 使用手册
  • Docker安装openGauss
  • 使用kubeadm部署Kubernetes(k8s)集群的步骤
  • Linux ELF文件详解:深入理解可执行文件格式
  • 将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
  • Alpine Linux基本介绍与新手使用指南
  • Spring MVC 核心枢纽:DispatcherServlet 的深度解析与实践价值
  • FastAPI 教程:从入门到实践
  • V837s-调整内核dmesg内容ring buffer大小
  • k8s从入门到放弃之Ingress七层负载