Tag: logrotate日志切割
-
在Linux Centos7下,如何定时对日志文件进行切割?
使用logrotate通用方法来切割日志:(1).logrotate的配置文件logrotate配置文件主要在两个地方:/etc/logrotate.conf以及/etc/logrotate.d/下的明细配置文件。其中/etc/logrotate.conf文件是主配置文件,/etc/logrotate.d/下的明细配置文件都会被读入/etc/logrotate.conf进行执行,所以请注意这里还涉及到了公有变量和私有变量。 logrotate的执行是由crond服务来调用的,其脚本是/etc/cron.daily/logrotate,每天自动执行。我们可以看一下脚本具体内容: [root@moneyslow.com ~]# cat /etc/cron.daily/logrotate#!/bin/sh/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.confEXITVALUE=$?if [ $EXITVALUE != 0 ]; then/usr/bin/logger -t logrotate “ALERT exited abnormally with [$EXITVALUE]”fiexit 0简单的说明:/usr/sbin/logrotate工具调用了/var/lib/logrotate/logrotate.status和/etc/logrotate.conf两个文件。然后将执行的结果(就是那个$?,成功为0,不成功为非0)进行判断,非0时执行/usr/bin/logger命令。最后退出。看完定时计划任务,我们再来看主配置文件/etc/logrotate.conf(也就是公有变量)。具体内容如下:[root@moneyslow.com ~]# grep -vE “^$|^#” /etc/logrotate.conf weekly //每周一次rotate(翻译是旋转,其实就是切割)rotate 4 //保留4份切割文件,多余删除,不计算新建日志文件create //结束后创建一个新的空白日志文件dateext //用日期作为切切割文件的后缀include /etc/logrotate.d //将/etc/logrotate.d目录下的文件都加载进来(全都执行)/var/log/wtmp { //仅针对/var/log/wtmp文件monthly //每月执行一次create 0664 root utmp //结束后创建新的空白日志,权限0664,所有者root,所属组utmpminsize 1M //切割文件最少需要1M,否则不执行rotate 1 //保留1份,多余删除,不计算新建日志文件}/var/log/btmp { //仅针对/var/log/btmpmissingok //丢失不报错monthly //每月执行一次create 0600 root utmp //结束后创建新的空白日志,权限0600,所有者root,所属组utmprotate 1 //保留1份,多余删除,不计算新建日志文件}配置文件参数说明:missingok 日志切割期间产生错误将被忽略(如果日志丢失,不报错继续切割)daily、weekly、monthly、yearly 每天、每周、每月、每年执行create MODE OWNER GROUP 切割后指定创建新的空白文件的属性nocreate 不建立新的日志文件rotate N 保留N份,多余删除,不计算新建日志文件dateext 用当前日期作为后缀命名格式(默认年月日)dateformat .%s 配合dateext使用,紧跟在下一行出现,定义切割后的文件名,只支持%Y,%m,%d,%ssize/minsize 达到指定大小才会切割,默认单位bytes,还可以是KB和MBcompress 切割结束后,归档并使用gzip格式压缩nocompress 解除compress参数delaycompress 总是与compress参数一起使用,指示logrotate不要将最近的归档压缩,压缩将在下一次切割进行。nodelaycompress 解除delaycompress参数ifempty 即使日志为空,也执行切割notifempty 如果日志为空,切割不执行prerotate/endscript 在所有其他指令之前执行prerotate和endscript之间的命令。postrotate/endscript 在所有其他指令完成后,postrotate和endscript之间的命令将被执行。sharescripts 所有日志切割后统一执行一次脚本,如果没有配置该参数,则每个日志切割后都会执行一次脚本。errors ADDRESS 切割时的错误信息发送到指定的Emial地址mail ADDRESS 切割日志发送到指定的Email地址nomail 切割日志不发送邮件olddir DIRECTORY 切割后的日志文件放入指定目录,必须与当前日志处在同一文件系统noolddir 切割后的日志文件与当前文件放在同一目录下copytruncate 用于还在打开中的日志文件,把当前日志备份并截断;先拷贝后清空,可能丢失部分日志nocopytruncate 备份日志文件,但不截断。(2).查看上次切割日志时间/var/lib/logrotate/logrotate.status中默认记录logrotate上次切割日志文件的时间 [root@moneyslow.com logrotate]# cat /var/lib/logrotate/logrotate.statuslogrotate state…