定时清理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

相关文章

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

【Rocketmq入门-基本概念】

Rocketmq入门-基本概念 名词解释名称服务器(NameServer)消息队列(Message Queue)主题(Topic)标签(Tag)生产者(Producer)消费者(Consumer)拉取模式(Pull)推送模式(Push)消息模型(Message Model) 关键组件Broker消息存储工作流程 名词解释 名称服务器(NameServer) 定义: 名称服务器

SSM项目使用AOP技术进行日志记录

本步骤只记录完成切面所需的必要代码 本人开发中遇到的问题: 切面一直切不进去,最后发现需要在springMVC的核心配置文件中中开启注解驱动才可以,只在spring的核心配置文件中开启是不会在web项目中生效的。 之后按照下面的代码进行配置,然后前端在访问controller层中的路径时即可观察到日志已经被正常记录到数据库,代码中有部分注释,看不懂的可以参照注释。接下来进入正题 1、导入m

多数据源的事务处理总是打印很多无用的log日志

之前做了一个项目,需要用到多数据源以及事务处理,在使用事务处理,服务器总是打印很多关于事务处理的log日志(com.atomikos.logging.Slf4jLogger),但是我们根本不会用到这些log日志,反而使得查询一些有用的log日志变得困难。那要如何屏蔽这些log日志呢? 之前的项目是提高项目打印log日志的级别,后来觉得这样治标不治本。 现在有一个更好的方法: 我使用的是log

android两种日志获取log4j

android   log4j 加载日志使用方法; 先上图: 有两种方式: 1:直接使用架包 加载(两个都要使用); 架包:android-logging-log4j-1.0.3.jar 、log4j-1.2.15.jar  (说明:也可以使用架包:log4j-1.2.17.jar)  2:对架包输入日志的二次封装使用; 1:直接使用 log4j 日志框架获取日志信息: A:配置 日志 文