当前位置: 首页 > 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等后缀

相关文章:

  • 路径规划算法概论:从理论到实践
  • Python 基础语法(1)【 适合0基础 】
  • C# StringBuilder代码中预分配容量的作用
  • Java免费获取汇率工具实现
  • 【计算机组成原理 第5版】白、戴编著 第四章 指令系统 课后题总结
  • HarmonyOS 应用开发学习记录 - 从Windows开发者视角看鸿蒙开发
  • 搭建一个springColud 项目,从头开始,里面有订单,库存两个模块
  • 湖北理元理律师事务所服务方法论:债务规划中的倾听者价值
  • CentOS7下的Flink 集群部署
  • EtherCAT转CC-Link IE协议转换通讯助力库卡机器人与三菱PLC无缝对接
  • C++_红黑树
  • 《为什么 String 是 final 的?Java 字符串池机制全面解析》
  • 常用ADB命令
  • LeetCode 3442. Maximum Difference Between Even and Odd Frequency I
  • C# Serilog 日志
  • 全国空气质量监测站点数据分析:从原始数据到空间可视化
  • (八)深度循环神经网络:长序列建模、注意力机制与多模态融合
  • NY167NY171美光固态闪存NY176NY180
  • 交叉编译笔记
  • 开源高频电磁场与电磁波数值仿真软件
  • asp.net答辩做网站/it菜鸡网seo
  • 广州建设工程交易中心主任/优化推广方案
  • 手机怎么样做网站/seo外推
  • 怎么做那些盗号网站/武汉seo网站优化
  • 大连网站建设讯息/杭州seo网络推广
  • 网站建设对企业影响有多大/策划公司排行榜