logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。
logrotate 在很多 Linux 发行版上都是默认安装的。系统会定时运行 logrotate,一般是每天一次。系统是这么实现按天执行的。crontab 会每天定时执行 /etc/cron.daily 目录下的脚本,而这个目录下有个文件叫 logrotate。在 centos 上脚本内容是这样的:/etc/cron.daily/logrotate
使用示例
#创建配置文件
cat /etc/logrotate.d/mysql
/data/mysqld_3306/error.log {
copytruncate #先复制,再清空
create 640 mysql mysql #新文件的权限
ifempty #文件是空也切换
rotate 7 #保留几个备份文件
dateext
dateformat .%Y%m%d.%s
postrotate
date >> /tmp/logrotate.log #此处写切换后要执行的命令
endscript
}
/data/mysqld_3306/slow.log {
copytruncate
create 640 mysql mysql
ifempty
rotate 7
dateext
dateformat .%Y%m%d.%s
postrotate
date >> /tmp/logrotate.log
endscript
}
#查看配置有无问题
logrotate -d /etc/logrotate.d/mysql
#手动切换一次日志
logrotate -vf /etc/logrotate.d/mysql
#配置定时任务
crontab -l
0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.d/mysql &>>/dev/null
更多使用说明,请 man logrotate 查看。