Logrotate切割日志

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

 

Logrotate切割日志_第1张图片

查看/etc/cron.daily/logrotate文件

Logrotate切割日志_第2张图片

查看其中有/etc/logrotate.conf字段,此为logrotate的配置文件。

查看/etc/logrotate.conf文件,注意如图所示的文件路径

Logrotate切割日志_第3张图片

查看/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强制进行日志切割

  1. 等待一天的时间查看结果

Logrotate切割日志_第4张图片

  1. 可能会用到的命令

.gz文件解压:gzip -dv test.gz
文件压缩为.gz格式:gzip test

 

你可能感兴趣的:(Liunx,运维)