随笔 - 230  文章 - 0  评论 - 16  阅读 - 18万

日志切割轮转logrotate

背景:

今天重定向了nginx的日志,需要做一下日志切割。

logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。

 

1,先看是否已安装日志切割服务
看下是否存在

1
2
3
/usr/sbin/logrotate
/etc/logrotate.conf
/etc/logrotate.d/

 

2,配置文件目录

配置文件: /etc/logrotate.conf,这是 logrotate 的主配置文件。
logrotate 还在 /etc/logrotate.d/ 中存储了特定服务的配置。

 

3,新增本次目标配置 (其中具体字段含义,自己查)

/etc/logrotate.d/nginx_log

复制代码
/etc/nginx/logs/*.log {
    create 0640 nginx root
    daily
    rotate 7
    dateext
    missingok
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}
复制代码

dateext     让旧日志文件以创建日期命名。
daily          每天执行。
rotate 7:    保留7天。
missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
sharedscripts 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本。

 

 

4,logrotate自身的执行日志

logrotate自身的日志通常存放于 /var/lib/logrotate/logrotate.status 目录。如果处于排障目的,我们想要logrotate记录到任何指定的文件。

 

 

5,logrotate的执行时间规律

查看
cat /etc/anacrontab

 

 


里面有个
START_HOURS_RANGE=3-22 这个是开始时间
RANDOM_DELAY=45 这个是随机的延迟时间,表示最大45min.

还有个
1 5 cron.daily nice run-parts /etc/cron.daily

第一个是Recurrence period 第二个是延迟时间,所以cron.daily会在3:22+(5,45)这个时间段执行。

 

6,单独执行其中一个配置

logrotate -vf nginx_log

 

效果符合预期

 

posted on   hrbust_09zhangyabin  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
历史上的今天:
2015-08-12 前端学习资料汇总(转载)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示