推荐一款日志切割神器,很好很强大( 四 )

{ sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/` 2> /dev/ || true endscript}[root@huanqiu_web1 ~]# ll /var/log/messages*-rw------- 1 root root 34248975 Jan 19 18:42 /var/log/messages-rw------- 1 root root 51772994 Dec 25 03:11 /var/log/messages-20161225-rw------- 1 root root 51800210 Jan 1 03:05 /var/log/messages-20170101-rw------- 1 root root 51981366 Jan 8 03:36 /var/log/messages-20170108-rw------- 1 root root 51843025 Jan 15 03:40 /var/log/messages-20170115[root@huanqiu_web1 ~]# ll /var/log/cron*-rw------- 1 root root 2155681 Jan 19 18:43 /var/log/cron-rw------- 1 root root 2932618 Dec 25 03:11 /var/log/cron-20161225-rw------- 1 root root 2939305 Jan 1 03:06 /var/log/cron-20170101-rw------- 1 root root 2951820 Jan 8 03:37 /var/log/cron-20170108-rw------- 1 root root 3203992 Jan 15 03:41 /var/log/cron-20170115[root@huanqiu_web1 ~]# ll /var/log/secure*-rw------- 1 root root 275343 Jan 19 18:36 /var/log/secure-rw------- 1 root root 2111936 Dec 25 03:06 /var/log/secure-20161225-rw------- 1 root root 2772744 Jan 1 02:57 /var/log/secure-20170101-rw------- 1 root root 1115543 Jan 8 03:26 /var/log/secure-20170108-rw------- 1 root root 731599 Jan 15 03:40 /var/log/secure-20170115[root@huanqiu_web1 ~]# ll /var/log/spooler*-rw------- 1 root root 0 Jan 15 03:41 /var/log/spooler-rw------- 1 root root 0 Dec 18 03:21 /var/log/spooler-20161225-rw------- 1 root root 0 Dec 25 03:11 /var/log/spooler-20170101-rw------- 1 root root 0 Jan 1 03:06 /var/log/spooler-20170108-rw------- 1 root root 0 Jan 8 03:37 /var/log/spooler-20170115tomcat日志切割一例
[root@huanqiu-backup ~]# cat /etc/logrotate.d/tomcat/Data/app/tomcat-7-huanqiu/logs/catalina.out {rotate 14dailycopytruncatecompressnotifemptymissingok}[root@huanqiu-backup ~]# ll /Data/app/tomcat-7-huanqiu/logs/catalina.*-rw-r--r--. 1 root root 0 Jan 19 19:11 /Data/app/tomcat-7-huanqiu/logs/catalina.out-rw-r--r--. 1 root root 95668 Jan 19 19:11 /Data/app/tomcat-7-huanqiu/logs/catalina.out.1.gz早期用过的nginx日志处理一例
[root@letv-backup ~]# vim /letv/sh/cut_nginx_log.sh#!/bin/bash# 你的日志文件存放目录logs_path="/letv/logs/"# 日志文件的名字 , 多个需要空格隔开logs_names=(error access pv_access)dates=`date -d "yesterday" +"%Y%m%d"`mkdir -p ${logs_path}$dates/num=${#logs_names[@]}for((i=0;imv ${logs_path}${logs_names[i]}.log ${logs_path}$dates/${logs_names[i]}.logdone#nginx平滑重启kill -USR1 `cat /letv/logs/nginx/nginx.pid` 结合crontab定时执行[root@letv-backup ~]# crontab -e#nginx日志切割00 00 * * * cd /letv/logs;/bin/bash /letv/sh/cut_nginx_log.sh > /dev/ 2>$13、尝试解决logrotate无法自动轮询日志的办法现象说明:
使用logrotate轮询nginx日志 , 配置好之后 , 发现nginx日志连续两天没被切割 , 这是为什么呢??
然后开始检查日志切割的配置文件是否有问题 , 检查后确定配置文件一切正常 。
于是怀疑是logrotate预定的cron没执行 , 查看了cron的日志 , 发现有一条Dec 7 04:02:01 www crond[18959]: (root) CMD (run-parts /etc/cron.daily)这样的日志 , 证明cron在04:02分时已经执行/etc/cron.daily目录下的程序 。
接着查看/etc /cron.daily/logrotate(这是logrotate自动轮转的脚本)的内容:
[root@huanqiu_test ~]# cat /etc/cron.daily/logrotate#!/bin/sh/usr/sbin/logrotate /etc/logrotate.conf >/dev/ 2> then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"fiexit 0没有发现异常 , 配置好的日志轮转操作都是由这个脚本完成的 , 一切运行正常 , 脚本应该就没问题 。
直接执行命令:
[root@huanqiu_test ~]# /usr/sbin/logrotate /etc/logrotate.conf这些系统日志是正常轮询了 , 但nginx日志却还是没轮询 。
接着强行启动记录文件维护操作 , 纵使logrotate指令认为没有需要 , 应该有可能是logroate认为nginx日志太小 , 不进行轮询 。
故需要强制轮询 , 即在/etc/cron.daily/logrotate脚本中将 -t 参数替换成 -f 参数
[root@huanqiu_test ~]# cat /etc/cron.daily/logrotate#!/bin/sh/usr/sbin/logrotate /etc/logrotate.conf >/dev/ 2> then