注:针对任何日志文件(rsyslog 日志、Nginx访问或错误日志…)
一、logrotate (轮转,日志切割)
1. 如果没有日志轮转,日志文件会越来越大
2. 将丢弃系统中最旧的日志文件,以节省空间
3. logrotate本身不是系统守护进程,它是通过计划任务crond每天执行
logrotate 配置文件:
/etc/logrotate.conf (决定每个日志文件如何轮转) /etc/logrotate.d/*
[root@fanhua ~]# ls /etc/logrotate.conf /etc/logrotate.d/
/etc/logrotate.conf
/etc/logrotate.d/:
acpid cups iscsiuiolog ppp rpm subscription-manager up2date wpa_supplicant conman httpd mgetty psacct setroubleshoot syslog vsftpd.log yum
主配置文件
[root@fanhua ~]# vim /etc/logrotate.conf
weekly //轮转的周期,一周轮转
rotate 4 //保留4份
create //轮转后创建新文件
dateext //使用日期作为后缀
#compress //日志轮替时,旧的日志进行压缩
include /etc/logrotate.d //包含该目录下的配置文件
/var/log/wtmp { //对该日志文件设置轮转的方法
monthly //一月轮转一次
minsize 1M //最小达到1M才轮转,否则就算时间到了也不轮转
create 0664 root utmp //轮转后创建新文件,并设置权限
rotate 1 //保留一份
}
/var/log/btmp {
missingok //丢失不提示
monthly //每月轮转一次
create 0600 root utmp //轮转后创建新文件,并设置权限
rotate 1 //保留一份
}
例1:轮转文件/var/log/yum.log
vim /etc/logrotate.d/yum
/var/log/yum.log {
missingok //丢失不提醒
#notifempty // 空文件不轮转
#size 30k //只要到了30k就轮转
#yearly
daily //每天轮转一次
rotate 3
create 0777 root root
}
测试:
[root@localhost]# /usr/sbin/logrotate /etc/logrotate.conf //手动轮转
[root@localhost]# /usr/sbin/logrotate -f /etc/logrotate.conf //强制手动轮转
[root@localhost apache]# logrotate -f /etc/logrotate.d/yum
[root@localhost apache]# ls /var/log/yum*
/var/log/yum.log /var/log/yum.log.1 /var/log/yum.log-20200104
[root@localhost ]# grep yum /var/lib/logrotate/logrotate.status //记录所有日志文件最近轮转的时间 "/var/log/yum.log" 2017-3-31-10:0:23
#/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf //根据状态文件,规则文件进行轮转