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

ZooKeeper日志自动清理实用脚本

ZooKeeper日志自动清理:保持系统整洁的实用脚本

在管理ZooKeeper集群时,定期清理日志文件是一项重要但常被忽视的任务。本文将介绍一个简单而有效的bash脚本,用于自动清理ZooKeeper的日志和快照文件,并讨论如何使用cron来定期执行此脚本。

在这里插入图片描述
磁盘告警,所以写了一个脚本 定期清理。

脚本内容

首先,让我们看看这个清理脚本的内容:

#!/bin/bash#snapshot file dir
dataDir=/var/zookeeper/version-2
#tran log dir
dataLogDir=/var/zookeeper/version-2
logDir=/usr/local/zookeeper/logs
#Leave 60 files
count=60
count=$[$count+1]
ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f
ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f
ls -t $logDir/zookeeper.log.* | tail -n +$count | xargs rm -f

脚本解析

让我们逐行分析这个脚本:

  1. #!/bin/bash: 这是shebang,指定使用bash解释器执行此脚本。

  2. 定义了三个目录变量:

    • dataDir: 存储快照文件的目录
    • dataLogDir: 存储事务日志的目录
    • logDir: 存储ZooKeeper日志的目录
  3. count=60: 设置保留的文件数量为60个。

  4. count=$[$count+1]: 将count增加1,这是为了在使用tail命令时正确计算要删除的文件数。

  5. 接下来的三行是清理逻辑的核心:

    ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f
    ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f
    ls -t $logDir/zookeeper.log.* | tail -n +$count | xargs rm -f
    

    每行都执行以下操作:

    • ls -t: 按时间顺序列出文件
    • tail -n +$count: 选择旧于前60个的所有文件
    • xargs rm -f: 删除这些文件

自动化执行

要自动执行这个脚本,我们可以使用cron。以下是一个cron表达式示例:

2 2 * * * /bin/bash /data/www/cleanlog.sh > /dev/null 2>&1

这个cron表达式的含义是:

  • 每天凌晨2:02执行脚本
  • 脚本输出被重定向到/dev/null,不保存日志

结论

这个简单的脚本可以有效地管理ZooKeeper的日志和快照文件,防止磁盘空间被耗尽。通过cron自动化执行,可以确保系统始终保持整洁和高效。在实际部署时,请根据您的具体需求和环境调整脚本参数和执行频率。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI可解释性(Python语言版)书籍推荐
  • 什么样的双筒式防爆器把煤矿吸引?
  • kalman的python实现
  • Elasticsearch模糊查询之Wildcard
  • Unity横板动作游戏 - 素材导入和整理
  • 月薪竟然高达60k,AI大模型凭什么?
  • 手摸手教你前端和后端是如何实现导出 Excel 的?
  • Python 爬虫项目实战(一):破解网易云 VIP 免费下载付费歌曲
  • uniapp h5支付(支付宝和微信支付)
  • [ Socket学习 ] 第一章:网络基础知识
  • 常用排序算法的实现与介绍
  • Pyinstaller打包OSError: could not get source code【终极解决】
  • [Meachines] [Easy] Admirer Adminer远程Mysql反向+Python三方库函数劫持权限提升
  • C++面试---小米
  • 食源送系统项目的测试
  • 07.Android之多媒体问题
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • JavaScript 奇技淫巧
  • jdbc就是这么简单
  • leetcode388. Longest Absolute File Path
  • mysql 数据库四种事务隔离级别
  • Netty 4.1 源代码学习:线程模型
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 从输入URL到页面加载发生了什么
  • 关于字符编码你应该知道的事情
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 前端知识点整理(待续)
  • 原生Ajax
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (+4)2.2UML建模图
  • (02)Unity使用在线AI大模型(调用Python)
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (四) 虚拟摄像头vivi体验
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET delegate 委托 、 Event 事件
  • .net MySql
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .net2005怎么读string形的xml,不是xml文件。
  • /bin、/sbin、/usr/bin、/usr/sbin
  • ;号自动换行
  • @KafkaListener注解详解(一)| 常用参数详解
  • @SentinelResource详解
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • []指针
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • [BUUCTF 2018]Online Tool(特详解)
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [Docker]六.Docker自动部署nodejs以及golang项目
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [ES-5.6.12] x-pack ssl
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明
  • [Git][认识Git]详细讲解
  • [ICCV2017]Neural Person Search Machines