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

相关文章

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

开启mysql的binlog日志步骤详解

《开启mysql的binlog日志步骤详解》:本文主要介绍MySQL5.7版本中二进制日志(bin_log)的配置和使用,文中通过图文及代码介绍的非常详细,需要的朋友可以参考下... 目录1.查看是否开启bin_log2.数据库会把日志放进logs目录中3.查看log日志总结 mysql版本5.71.查看

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

SpringBoot如何使用TraceId日志链路追踪

《SpringBoot如何使用TraceId日志链路追踪》文章介绍了如何使用TraceId进行日志链路追踪,通过在日志中添加TraceId关键字,可以将同一次业务调用链上的日志串起来,本文通过实例代码... 目录项目场景:实现步骤1、pom.XML 依赖2、整合logback,打印日志,logback-sp

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都