熟悉配置文件及参数
2025年2月18日大约 4 分钟
熟悉配置文件 /etc/logrotate.conf及参数
1.配置文件 /etc/logrotate.conf
比如以系统日志/var/log/message做切割来简单说明下:
第一次执行完rotate(轮转)之后,原本的messages会变成messages.1,而且会制造一个空的messages给系统来储存日志;
第二次执行之后,messages.1会变成messages.2,而messages会变成messages.1,又造成一个空的messages来储存日志!
如果仅设定保留三个日志(即轮转3次)的话,那么执行第三次时,则 messages.3这个档案就会被删除,并由后面的较新的保存日志所取代!也就是会保存最新的几个>日志。
日志究竟轮换几次,这个是根据配置文件中的rotate参数来判定的。
看下logrotate.conf配置:
cat /etc/logrotate.conf
这是默认值,如果其他配置文件设定了别的值,就会以别的参数为准
# see "man logrotate" for details
# rotate 8log files weekly
weekly #默认每一周执行一次rotate轮转工作
# keep 4 weeks worth of backlogs
rotate 8 #保留多少个日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数,0 指没有备份
# create new (empty) log files after rotating old ones
create #自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志
# use date as a suffix of the rotated file
dateext #这个参数很重要!就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
# uncomment this if you want your log files compressed
#compress #是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d #将/etc/logrotate.d/ 目录中的所有文件都加载进来
# no packages own wtmp and btmp -- we'll rotate 8them here
/var/log/wtmp { #//仅针对 /var/log/wtmp 所设定的参数
monthly #每月一次切割,取代默认的一周
create 0664 root utmp #指定新建的日志文件权限以及所属用户和组
minsize 1M #文件大小超过 1M 后才会切割
rotate 8 #只8个日志.
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 8
}
这个 wtmp 可记录用户登录系统及系统重启的时间
因为有 minsize 的参数,因此不见得每个月一定会执行一次喔.要看文件大小。
由这个文件的设定可以知道/etc/logrotate.d其实就是由/etc/logrotate.conf 所规划出来的目录,虽然可以将所有的配置都写入/etc/logrotate.conf ,但是这>样一来这个文件就实在是太复杂了,尤其是当使用很多的服务在系统上面时, 每个服务都要去修改/etc/logrotate.conf的设定也似乎不太合理了。
所以,如果独立出来一个目录,那么每个要切割日志的服务, 就可以独自成为一个文件,并且放置到 /etc/logrotate.d/ 当中
其他重要参数说明
参数名称 | 功能描述 |
---|---|
compress | 通过 gzip 压缩转储后的日志。 |
nocompress | 禁用 gzip 压缩处理。 |
copytruncate | 备份并截断正在写入的日志文件(先拷贝后清空,可能丢失部分数据)。 |
nocopytruncate | 备份日志文件但不截断原文件。 |
create | 轮转时创建新文件并指定权限、所有者和组(如 create 0777 nobody nobody )。 |
nocreate | 不自动创建新的日志文件。 |
delaycompress | 与 compress 共用,延迟到下一次转储时压缩本次的日志文件。 |
nodelaycompress | 覆盖 delaycompress ,立即压缩转储的日志文件。 |
missingok | 如果日志文件不存在,不报错并继续处理。 |
errors | 将转储错误信息发送到指定邮箱地址(如 errors admin@example.com )。 |
ifempty | 即使日志为空也执行轮转(默认行为)。 |
notifempty | 日志文件为空时不进行轮转。 |
mail | 将转储的旧日志文件发送到指定邮箱(如 mail admin@example.com )。 |
nomail | 不通过邮件发送转储的日志文件。 |
olddir | 将转储的日志移动到指定目录(需与原文件在同一文件系统)。 |
noolddir | 转储的日志文件保留在原目录。 |
sharedscripts | 所有日志轮转完成后,统一执行一次 postrotate 脚本(默认每个日志轮转后单独执行脚本)。 |
prerotate | 在轮转前执行自定义命令(需独立成行,以 endscript 结束)。 |
postrotate | 在轮转后执行自定义命令(如重启服务,需独立成行,以 endscript 结束)。 |
daily | 按天轮转日志。 |
weekly | 按周轮转日志。 |
monthly | 按月轮转日志。 |
rotate | 保留的历史日志文件数量(如 rotate 5 保留 5 个备份)。 |
dateext | 使用当前日期作为轮转日志的后缀(默认格式:-YYYYMMDD )。 |
dateformat | 配合 dateext 自定义日期格式(如 .%s ,仅支持 %Y %m %d %s 参数)。 |
size | 当日志文件达到指定大小时轮转(如 size 100M ,支持单位:k /m )。 |
minsize | 当日志文件达到指定大小时轮转(如 size 100M ,支持单位:k /m )。 |