Linux:logrotate日志轮循分割

比如httpd产生的日志,如果你没做任何设置,他会一直把日志都输出到一个文件中,这个文件会越来越大,httpd就有一个日志切割工具,他可以去分割你的日志,但是无法去轮循日志
日志切割的作用:防止文件过大,分开储存方便存储,由于切割的文件较小打开的速度快 ,对文件的清除更方便,切割也可以成为分割一类
什么是轮循:假如你设置了10个日志的最大数,当有了第11个日志,就会把第1个删除掉,一直保持10个日志文件,httpd的日志分割就不支持,日志轮询,但是强大的logrotate都支持,轮循也可以成为轮滚一类的
如果你想定时执行操作

可以使用一次性计划任务:at

周期性计划任务: crontab


logrotate配置文件

查看一下配置文件

cat /etc/logrotate.conf | grep -v "^$" | grep -v "^#" 

如果你执行了命令,报错了,你直接使用yum -y install logrotate安装一下就行了

接下来讲解一下他官方自带的配置文件

这个就是文件的大致内容,没有标注释的地方是和上面重复了,他们都一个意思

上面属于全局配置,文件中下面的属于单个小项目,接下来下面写的内容就是一些logrotate的关键字了

  • daily :指定转储周期为每天
  • weekly :指定转储周期为每周
  • monthly :指定转储周期为每月
  • rotate count :指定日志文件删除之前转储的次数,0 指没有备份,5 指保留 5 个备份
  • tabooext [+] list:让 logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和~
  • missingok:在日志轮循期间,任何错误将被忽略,例如 "文件无法找到" 之类的错误。
  • size size:当日志文件到达指定的大小时才转储,bytes (缺省) 及 KB (sizek) 或 MB (sizem)
  • 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: 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

新增轮滚项目

touch /var/log/my.log

/var/log/my.log作为我们切割的目标

logrotate文件中有个引入文件的目录,我们把要写的项目写在里面也行

cat << EOF > /etc/logrotate.d/mylogrotate
/var/log/my.log{
                daily
                missingok
                create
                rotate 2
                compress
               }
EOF

/var/log/my.log{ 选择位置

daily 一天一次

missingok 不报错

create 创建新文件

rotate 2 保留2个备份

compress 启动压缩,格式为gz

}

EOF

写进去就行了


测试轮滚

配置文件搞定了以后再去测试一下轮滚

现在他自动就会进行轮滚,但是他是一天一轮滚
有三种办法进行实现:

1.改时间

2.使用logrotate命令执行

3.等待时间到来

logrotate -fv /etc/logrotate.d/mylogrotate 

手动执行切割

发现他最多就2个

因为刚刚设置最大数为2

如果你想看里面的内容使用gunzip解压一下就有了

数字最小内容最新,数字最大内容越老,这就是成功的滚动起来了

相关推荐
。puppy4 分钟前
HCIP--3实验- 链路聚合,VLAN间通讯,Super VLAN,MSTP,VRRPip配置,OSPF(静态路由,环回,缺省,空接口),NAT
运维·服务器
颇有几分姿色14 分钟前
深入理解 Linux 内存管理:free 命令详解
linux·运维·服务器
光芒再现dev31 分钟前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
AndyFrank44 分钟前
mac crontab 不能使用问题简记
linux·运维·macos
筱源源1 小时前
Kafka-linux环境部署
linux·kafka
EricWang13581 小时前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
成都古河云2 小时前
智慧场馆:安全、节能与智能化管理的未来
大数据·运维·人工智能·安全·智慧城市
算法与编程之美2 小时前
文件的写入与读取
linux·运维·服务器
xianwu5432 小时前
反向代理模块
linux·开发语言·网络·git
Amelio_Ming2 小时前
Permissions 0755 for ‘/etc/ssh/ssh_host_rsa_key‘ are too open.问题解决
linux·运维·ssh