1、预备知识:
logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。我们可以根据日志的大小,或者根据其使用的天数来转储。 |
logrotate 的执行由crond服务实现。查看/etc/cron.daily/logrotate文件,它实际上是个shell script,用来启动logrotate。 logrotate程序每天由cron在指定的时间(/etc/crontab)启动。因此,使用ps是无法查看到logrotate的。如果它没有起来,就要查看一下crond服务有没有在运行。在执行logrotate时,需要指定其配置文件/etc/logrotate.conf。 |
故而查看logrotate是否可以启动,先要查看crontab是否启动,命令如下: 检查crontab服务是否启动:service crond status 启动crontab服务:service crond start
|
查看/etc/cron.daily/logrotate文件 查看其中有/etc/logrotate.conf字段,此为logrotate的配置文件。 |
查看/etc/logrotate.conf文件,注意如图所示的文件路径 |
查看/etc/logrotate.d文件夹 |
配置文件
执行文件:/usr/sbin/logrotate 主配置文件:/etc/logrotate.conf 自定义配置文件:/etc/logrotate.d/*.conf /etc/logrotate.d/ - 通常一些第三方软件包,会把自己私有的配置文件,也放到这个目录下。如yum,zabbix-agent,syslog等。
修改配置文件后,并不需要重启服务。 |
参数详解:Logrotate有许多可配置参数,也可使用man命令来查询:
compress 通过gzip压缩转储以后的日志 nocompress 不压缩 copytruncate 用于还在打开中的日志文件,把当前日志备份并截断 nocopytruncate 备份日志文件但是不截断 create mode owner group 转储文件,使用指定的文件模式创建新的日志文件 nocreate 不建立新的日志文件 delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩 nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。 errors address 专储时的错误信息发送到指定的Email 地址 ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。 notifempty 如果是空文件的话,不转储 mail address 把转储的日志文件发送到指定的E-mail 地址 nomail 转储时不发送日志文件 olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 noolddir 转储后的日志文件和当前日志文件放在同一个目录下 prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行 postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行 daily 指定转储周期为每天 weekly 指定转储周期为每周 monthly 指定转储周期为每月 rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份 tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~ size size 当日志文件到达指定的大小时才转储,bytes(缺省)及KB(sizek)或MB(sizem) |
参考资料:
https://blog.csdn.net/forthemyth/article/details/44062529 https://www.cnblogs.com/cainiaoliu/p/6259640.html https://www.cnblogs.com/xinlibao/p/9081079.html |
2、操作步骤:
1、cd /etc/logrotate.d/ 2、touch nginx 3、添加如下内容(不复制注释): /nginx的路径/logs/*.log{ daily #指定转储周期为每天 rotate 7 #指定日志文件删除之前转储的次数,0指没有备份,7指保留7个备份 compress #通过gzip压缩转储以后的日志 missingok #日志不存在,分析下一个 notifempty #空文件不转储 sharedscripts #整个日志组运行一次的脚本 create 0600 root root #create mode owner group转储文件,使用指定的文件模式创建新的日志文件 postrotate #在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行 [ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` endscript #重启nginx,重新加载日志文件,防止不写 } 4、logrotate -vf /etc/logrotate.d/nginx强制进行日志切割 |
.gz文件解压:gzip -dv test.gz |