logrotate定时每秒按指定大小切割日志

编程入门 行业动态 更新时间:2024-10-28 18:25:51

logrotate定时每秒按指定<a href=https://www.elefans.com/category/jswz/34/1771016.html style=大小切割日志"/>

logrotate定时每秒按指定大小切割日志

logrotate定时每秒按指定大小切割日志

    • 方案说明
    • logrotate方案配置
    • 循环切割脚本
    • crontab定时任务
    • 运行结果

方案说明

系统:Ubuntu Server 20.04
方案:在crontab中添加一个每分钟都执行的脚本,此脚本每秒使用logrotate切割日志文件
以JAVA项目为例,在JAR包同级目录下有如下文件↓↓↓↓


logrotate方案配置

test-logrotate文件

/root/Desktop/test/nohup.d/nohup.out
{size=5Mrotate 10copytruncatenotifempty
}

说明:用此配置切割/root/Desktop/test/nohup.d/目录下的nohup.out文件;当nohup.out大小>=5M时,执行一次切割,最多保留10份(一次切割生成一份新的日志文件,命名为nohup.out.x,x的取值范围为1-10);切割完毕后清空nohup.out;如果nohup.out是空的,则不切割。
注意:logrotate只能通过size判断文件大小是否满足切割,至于切割后的文件大小无法保证。对于如上配置,如果初始的nohup.out大小为500M,logrotate判断大于5M需要切割,切割出来的新文件大小还是500M。如果日志文件增长过快,比如达到了20M/S,那么logrotate每秒切割完后的文件大小肯定也是≥20M的。遇到这种情况,就需要考虑提高切割的频率。

循环切割脚本

test-crontab.sh

#!/bin/bash
for (( i = 0; i < 60; i++ )); 
do/usr/sbin/logrotate /root/Desktop/test/test-logrotatesleep 1
done
exit 0

说明:循环执行logrotate切割命令60次,间隔为1秒

crontab定时任务

将脚本加入到crontab中,设置每分钟执行一次(crontab定时任务执行周期最低为分钟)
输入crontab -e

输入如下命令并保存

* * * * * bash /root/Desktop/test/test-crontab.sh

输入crontab -l可查看已开启的定时任务

运行结果

运行.jar文件,将java控制台输出的内容存放至nohup.out文件

nohup java -jar /root/Desktop/test/logtest-1.0.jar >> /root/Desktop/test/nohup.d/nohup.out 2>&1 &

一段时间过后,日志目录下的文件↓↓↓↓

更多推荐

logrotate定时每秒按指定大小切割日志

本文发布于:2024-02-11 18:56:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1682745.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:大小   日志   logrotate

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!