简单了解Linux操作系统的logrotate日志轮转功能

一、简介

  logrotate日志轮转批量管理日志,进行分割和删除。日志记录了程序运行时各种信息。通过日志可以分析用户行为,记录运行轨迹,查找程序问题。但是磁盘的空间是有限的,日志轮转就像飞机里的黑匣子,记录的信息再重要也只能记录最后一段时间发生的事。所以为了节省空间和整理方便,日志文件经常需要按时间或大小等维度分成多份,删除时间久远的日志文件,以便于存放新日志文件。

二、工作原理

logrotate日志轮转是按照配置进行轮转

配置文件种类有两种:
  主配置文件:/etc/logrotate.conf //决定每个日志该如何进行轮转
  子配置文件夹:/etc/logrotate.d/* //自定义配置,以便于管理

三、主配置介绍

[root@localhost ~]# cat   /etc/logrotate.conf 
#see "man logrotate" for details
#rotate log files weekly
weekly                        //轮转周期,有日月周年,年不常见,这里是一周一轮换

#keep 4 weeks worth of backlogs
rotate 4                     //保留四份
 
#create new (empty) log files after rotating old ones
create                      //轮转后重新创建一个新文件

#use date as a suffix of the rotated file
dateext                    //旧文件改名字,使用日期作为后缀

#uncomment this if you want your log files compressed
#compress                  //旧文件是否压缩

#RPM packages drop log rotation information into this directory
include /etc/logrotate.d   //以上设置同样包含该目录下的子配置文件

#no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {           //对某日志文件设置轮转的方法
monthly 			  	  //一月轮转一次
minsize 1M 	             //最小达到1M才轮转(体积和日期同时设置时,若是最小体积,则同时达到两个条件才会进行轮转,若是最大体积maxsize,则表示周期或者体积达到任意一个即可进行轮转)
create 0664 root utmp	 //轮转后创建新文件,并设置权限
rotate 1 		         //保留一份
}
/var/log/btmp {
missingok 		         //丢失不提示(非常不重要的文件)
monthly 			     //每月轮转一次
create 0600 root utmp 	//轮转后创建新文件,并设置权限
rotate 1 		        //保留一份
}

#system-specific logs may be also be configured here.

四、示例(用yum日志轮转为例)

1.配置轮转规则

[root@localhost ~]# vim /etc/logrotate.d/yum 
/var/log/yum.log {
missingok		      //丢失不执行
#notifempty	       	  //空文件不论转
#maxsize 30k		  //达到30k轮转, daily or  size
#yearly		          //或者一年一轮转
daily		          //缩小周期到1天
rotate 3		      //轮转保留3次
create 0777 root root
}

2.测试

[root@localhost ~]# /usr/sbin/logrotate /etc/logrotate.conf       //手动轮转
[root@localhost ~]# /usr/sbin/logrotate /etc/logrotate.conf
[root@localhost ~]# ls /var/log/yum*
/var/log/yum.log

发现只有一个,未创建新文件、产生旧文件,是因为未到一天
修改时间:

[root@localhost ~]#date 12030000                  //月日时分,向后推移一天
[root@localhost ~]# /usr/sbin/logrotate /etc/logrotate.conf
[root@localhost ~]# ls /var/log/yum*
/var/log/yum.log  /var/log/yum.log-20201203

成功!

你可能感兴趣的:(Linux基础,笔记,linux,centos,shell)