logrotate详情和坑点

简介: logrotate详情和坑点

logrotate 配置参数


compress                        通过gzip压缩转储以后的日志
        nocompress                      不压缩
        copytruncate                    用于还在打开中的日志文件,把当前日志备份并截断
        nocopytruncate                  备份日志文件但是不截断
        create mode owner group         转储文件,使用指定的文件模式创建新的日志文件
        nocreate                        不建立新的日志文件
        delaycompress 和 compress        一起使用时,转储的日志文件到下一次转储时才压缩
        nodelaycompress                 覆盖 delaycompress 选项,转储同时压缩。
        errors address                   专储时的错误信息发送到指定的Email 地址
        ifempty                         即使是空文件也转储,这个是 logrotate 的缺省选项。
        notifempty                      如果是空文件的话,不转储
        mail address                    把转储的日志文件发送到指定的E-mail 地址
        nomail                          转储时不发送日志文件
        olddir directory                转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
        noolddir                        转储后的日志文件和当前日志文件放在同一个目录下
        prerotate/endscript             在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
        postrotate/endscript            在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
        daily                           指定转储周期为每天
        weekly                          指定转储周期为每周
        monthly                         指定转储周期为每月
        rotate count                    指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
        tabootext [+] list 让logrotate   不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
        size size                       当日志文件到达指定的大小时才转储,bytes(缺省)及KB(sizek)或MB(sizem)


坑点

本人亲测


坑一:


logrotate 使用系统cron运行 默认是每天运行一次


所以你设置各种参数,有可能还是不运行的,比如每小时检测日志大小切割,除非你添加每小时运行的计划任务

脚本路径

/etc/cron.daily/logrotate 

解析

#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf ##运行日志轮转命令
EXITVALUE=$?  ##这段是监测轮转是否正常完成,不正常写入系统日志
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0


坑二:


logrotate的三种size方式

请时刻记住不设置计划任务的话 默认每天执行一次日志轮转命令

minsizi   两个条件都满足 ,大小到了,并且执行了日志切割命令 (周期内执行0、1次)
maxsizi   任一条件 (周期内执行1、n次)
sizi      大小到了就执行 ,但是要设置每分钟执行日志切割命令(设置后,周期参数自动失效)(无周期概念)


坑三:


logrotate的轮转周期

会影响轮转命令的执行,

不添加 sizi参数时,为执行命令的最小周期

添加后,根据具体sizi参数变化


坑四


logrotate的dateformat参数

只支持 %Y %m %d %H %s  这五种时间格式
dateformat -%Y%m%d%H.%s
效果 2021072214.1626933601


坑五


切割后继续往旧日志里写日志

系统日志相关

添加这3个参数
   sharedscripts
   postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
   endscript


总结 :个人认为有点鸡肋的功能,你设置了其中的参数,但他不一定生效

不如个人写个shell脚本去检测,清理,一系列操作 添加个计划任务,但是没办法,系统自带的 肯定也是最稳定的,还是人太菜,可能没玩明白吧


示例:

{ 
    compress                ##gizp 压缩
    delaycompress           ##转储后下一次再压缩
    rotate 6                ##备份和压缩备份一共6个
    create 0600 root root   ##创建原文件源属性
    copytruncate            ##无间断转储
    missingok               ##忽略错误
    dateext                 ##启用时间格式
    dateformat -%Y%m%d%H.%s ##自定义时间格式
    sharedscripts           ##轮转后的脚本段 (作用为,告知syslogd,使用新文件写入)发现配置后继续写入旧文件时配置该段
    postrotate              ##轮转后的脚本段
         /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript               ##轮转后的脚本段
}
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
Linux Shell
如何在 Linux 中永久设置 $PATH,用于定义系统在执行命令时搜索可执行文件的路径
如何在 Linux 中永久设置 $PATH,用于定义系统在执行命令时搜索可执行文件的路径
403 0
如何在 Linux 中永久设置 $PATH,用于定义系统在执行命令时搜索可执行文件的路径
|
前端开发 测试技术 持续交付
成功的上线之路:前端部署策略详解
前端部署是将您的Web应用从开发环境转移到生产环境的关键步骤。它不仅影响网站的可用性和性能,还涉及到安全性和用户体验。在本博客中,我们将深入研究前端部署的概念、最佳实践以及如何选择适合您项目的部署策略。
849 0
phpenv:PHP多版本安装和管理工具
phpenv:PHP多版本安装和管理工具
1386 0
|
Kubernetes 容器 Perl
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
17954 0
|
存储 Prometheus Kubernetes
阿里 sealer 是如何实现整个集群一键交付的?
顾名思义,和操作系统 .iso 镜像或 Docker 镜像类似,集群镜像是用一定的技术手段把整个集群的所有文件以一定格式打成的一个资源包。
2139 0
阿里 sealer 是如何实现整个集群一键交付的?
|
机器学习/深度学习 缓存 人工智能
《DeepSeek在高并发下的性能秘籍:稳定性与速度保障》
DeepSeek是一款基于Transformer架构的大语言模型,专为高并发场景设计。通过自注意力机制、分布式系统和负载均衡技术,DeepSeek能高效处理多请求,确保稳定性和快速响应。其缓存机制加速数据获取,模型优化提升计算效率,动态资源调配灵活应对流量波动。这些技术共同作用,使DeepSeek在智能客服、内容推荐等场景中表现出色,成为高并发应用的理想选择。
1133 10
|
监控 安全 数据处理
淘宝 1688 跨境电商官方接口接入全攻略,跨境卖家必知
本攻略详述了接入1688跨境电商官方接口的全过程,涵盖注册申请、开发调试、数据处理与业务集成、安全合规及上线维护等环节,帮助开发者高效对接1688,拓展跨境业务。
1431 0
|
资源调度 JavaScript 搜索推荐
Linux系统之部署CodeX Docs文档工具
【8月更文挑战第7天】Linux系统之部署CodeX Docs文档工具
609 4
|
开发工具 git
|
Linux
Linux定时任务:详解crontab与crond
Linux定时任务:详解crontab与crond
585 0

热门文章

最新文章