为保证系统磁盘空间不过度使用,保障系统的平稳运行,logrotate日志切割起到了很大作用,本文将对logrotate的使用做简单介绍。
一、logrotate介绍
logrotate是一个日志文件管理工具。用于分割日志文件、删除旧的日志文件、并且创建新的日志文件,起到“转储”的作用。以此来节省磁盘空间。
比如,可以通过设置logrotate,来让Nginx中的日志文件每过30天轮循,并且删除超过半年的日志,配置完成后,不必人为干预,logrotate即可完全自动化运行。
二、logrotate的配置使用
1、默认CentOS系统自带,直接yum安装
yum -y install logrotate crontabs
2、创建配置文件(Nginx默认日志文件路径为例)
vim /etc/logrotate.d/nginx_log
文件内容:
/usr/local/nginx/logs/access.log {
daily
rotate 5
missingok
notifempty
create 644 www www
postrotate
if [ -f /application/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /application/nginx/logs/nginx.pid`
fi
endscript
}
此模板是通用的,需要根据需求调整,其中的参数也不都是必要的。配置完毕后,进程是全自动的,可以长时间在不需要人为干预下运行。
3、配置文件说明
配置参数 | 说明 |
daily | 日志文档将按月轮循。其它可用值为'monthly','weekly'或者'yearly'。 |
rotate 5 | 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。 |
missingok | 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。 |
notifempty | 如果日志文件为空,轮循不会进行。 |
create 644 root root | 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。 |
postrotate/endscript | 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。 |
以上摘自man logrotate,可通过man手册来学习。
4、强制执行日志分割操作(以刚才配置的Nginx日志切割文件为例)
logrotate -vf /etc/logrotate.d/nginx_log
5、logrotate自身的日志文件默认/var/lib/logrotate/status中。