1)基本介绍
适合应用服务日志,系统日志按天切割
如果没有日志轮转,日志文件会越来越大
将丢弃系统中最旧的日志文件,以节省空间
logrotate本身不是系统守护进程,它是通过计划任务crond每天执行
# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf//日志轮转,按照/etc/logrotate.conf
注释:/var/lib/logrotate/logrotate.status 是轮转记录
/usr/sbin/logrotate -f /etc/logrotate.conf//强制轮转日志,主要用于测试
/usr/sbin/logrotate -f /etc/logrotate.d/httpd //具体的服务日志轮转
2)配置文件
logrotate配置文件
/etc/logrotate.conf//决定每个日志文件如何轮转
/etc/logrotate.d/*
3)配置文件详解
# egrep -v "^$|^#" /etc/logrotate.conf
==================全局设置==================
weekly//轮转周期,一周轮转
rotate 4//保留4份
create//轮转后创建新文件
dateext//使用日志作为后缀
compress//是否压缩
include /etc/logrotate.d //包含该目录下的文件
/var/log/wtmp {//对该日志文件设置轮转的方法
monthly//一个月轮转一次
create 0664 root utmp//轮转后创建新文件,并设置权限
minsize 1M//最小达到1M才轮转
rotate 1//保留一份
}
/var/log/btmp {
missingok//丢失不提示
monthly
create 0600 root utmp
rotate 1
}
4)httpd服务日志轮转
#vim /etc/logrotate.d/httpd
/var/log/httpd/*log {
missingok
notifempty//即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
sharedscripts//运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
delaycompress//延迟压缩
postrotate//在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}
#/usr/sbin/logrotate -f /etc/logrotate.conf//强制轮转日志
#ll /var/log/httpd/access* //发现日志已经被切割了
5)nginx 服务日志轮转
cat /etc/logrotate.d/nginx
/usr/local/nginx/logs/*log {
daily
rotate 365
missingok
notifempty
compress
dateext
sharedscripts
postrotate
/usr/local/nginx/sbin/nginx reload
endscript
}