定时清理rocketmq日志--crontab

2024-06-14 09:52

本文主要是介绍定时清理rocketmq日志--crontab,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、背景

之前在部署rocketmq的时候未修改日志路径,导致在用户目录下有日志数据写入。因不方便修改或空间足够可正常写入,但日志量过大需清理,现添加定时任务执行。

2、规划:

目前测试阶段,所以时间是可变的,后面可以根据实际需求修改时间。
用户:root
日志路径:/root/logs/rocketmqlogs/
定时任务脚本存放路径:/root/logs/deletelog.sh

3、脚本编写+定时任务添加

3.1脚本编写

cd /root/logs
vi deletelog.sh

#!/bin/bash
source /etc/profile
#指定路径
log_path="/root/logs/rocketmqlogs/"
max_size=100M
#max_days=90
#获取指定路径下的所有日志文件
#log_files=$(find $log_path -type f \( -size +$max_size -o -mtime +$max_days \))
log_files=$(find $log_path -type f \( -size +$max_size \))
echo "123"
##遍历每个日志文件
for file in $log_files;do
echo "$file"
#echo "234"
rm "$file"
echo "File #file has been deleted as it exceeds 100MB or existing for more than 3 days"
echo "已执行日志清理脚本"
done

3.2定时任务添加

如果不知道定时怎么写,可以看看
[root@localhost mail]# vi /etc/crontab
在这里插入图片描述

设置定时任务:crontab -e

49 16 * * *   /root/logs/deletelog.sh

查看定时任务是否建成:crontab -l

[root@localhost mail]# crontab -e
crontab: installing new crontab
[root@localhost mail]# crontab -l
49 16 * * *   /root/logs/deletelog.sh[root@localhost mail]# ll /root/logs/
total 8
-rwxr-xr-x 1 root root  524 Jun 13 16:35 deletelog.sh
drwxr-xr-x 3 root root 4096 Jun 13 16:49 rocketmqlogs
You have new mail in /var/spool/mail/root

4、问题

日志未清理-红框中的内容还存在
在这里插入图片描述

4.1查看定时任务执行时报错–/bin/sh: root: command not found

vi /var/spool/mail/root

[root@localhost mail]# vi /var/spool/mail/root
From root@localhost.localdomain  Thu Jun 13 15:50:02 2024
Return-Path: <root@localhost.localdomain>
X-Original-To: root
Delivered-To: root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)id 02AC92DB77E; Thu, 13 Jun 2024 15:50:01 +0800 (CST)
From: "(Cron Daemon)" <root@localhost.localdomain>
To: root@localhost.localdomain
Subject: Cron <root@localhost> root /root/logs/deletelog.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=119333>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20240613075002.02AC92DB77E@localhost.localdomain>
Date: Thu, 13 Jun 2024 15:50:01 +0800 (CST)/bin/sh: root: command not found

此处是因为一开始我的脚本中没有写:#!/bin/bash,所以定时任务无法执行。

4.2查看定时任务执行时报错–/bin/sh: /root/logs/deletelog.sh: Permission denied

From root@localhost.localdomain  Thu Jun 13 16:39:01 2024
Return-Path: <root@localhost.localdomain>
X-Original-To: root
Delivered-To: root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)id 225FB2DB77C; Thu, 13 Jun 2024 16:39:01 +0800 (CST)
From: "(Cron Daemon)" <root@localhost.localdomain>
To: root@localhost.localdomain
Subject: Cron <root@localhost> /root/logs/deletelog.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=119344>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20240613083901.225FB2DB77C@localhost.localdomain>
Date: Thu, 13 Jun 2024 16:39:01 +0800 (CST)/bin/sh: /root/logs/deletelog.sh: Permission denied

此处是脚本所在目录的权限不够,无法执行,后赋予755后好了。

终于正确执行,日志打印如下

From root@localhost.localdomain  Thu Jun 13 16:49:01 2024
Return-Path: <root@localhost.localdomain>
X-Original-To: root
Delivered-To: root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)id 46BFD2DB77E; Thu, 13 Jun 2024 16:49:01 +0800 (CST)
From: "(Cron Daemon)" <root@localhost.localdomain>
To: root@localhost.localdomain
Subject: Cron <root@localhost> /root/logs/deletelog.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=119346>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20240613084901.46BFD2DB77E@localhost.localdomain>
Date: Thu, 13 Jun 2024 16:49:01 +0800 (CST)123
/root/logs/rocketmqlogs/rocketmq_client.log.9
File #file has been deleted as it exceeds 100MB or existing for more than 3 days
已执行日志清理脚本
/root/logs/rocketmqlogs/rocketmq_client.log.7
File #file has been deleted as it exceeds 100MB or existing for more than 3 days
已执行日志清理脚本
/root/logs/rocketmqlogs/rocketmq_client.log.5
File #file has been deleted as it exceeds 100MB or existing for more than 3 days
已执行日志清理脚本
/root/logs/rocketmqlogs/rocketmq_client.log.3
File #file has been deleted as it exceeds 100MB or existing for more than 3 days
已执行日志清理脚本
/root/logs/rocketmqlogs/rocketmq_client.log.10
File #file has been deleted as it exceeds 100MB or existing for more than 3 days
已执行日志清理脚本
/root/logs/rocketmqlogs/rocketmq_client.log.8
File #file has been deleted as it exceeds 100MB or existing for more than 3 days
已执行日志清理脚本
/root/logs/rocketmqlogs/rocketmq_client.log.6
File #file has been deleted as it exceeds 100MB or existing for more than 3 days
已执行日志清理脚本
/root/logs/rocketmqlogs/rocketmq_client.log.4
File #file has been deleted as it exceeds 100MB or existing for more than 3 days
已执行日志清理脚本
/root/logs/rocketmqlogs/rocketmq_client.log.2
File #file has been deleted as it exceeds 100MB or existing for more than 3 days
已执行日志清理脚本

5、小结

  • 编写脚本时一定要记得加#!/bin/bash。
  • 编写脚本后一定要查看是否有执行权限。
  • 如果还是执行不起来,注意是否环境变量掉了。【可以写到脚本里,每次执行时加载环境变量】

6、链接

如何更改日志路径,以下链接供您参考,5.0.0版本及5.1.2版本。
链接: rocketmq-5.0.0的dleger高可用集群部署
链接: rocketmq-5.1.2的dleger高可用集群部署

这篇关于定时清理rocketmq日志--crontab的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060069

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结