nginx按分钟切割日志
网上有许多按照天切割日志的。但是由于应用需要,对该web服务器进行更详细的分析!所以要按照分钟切割。研发部门的要求是他们有一个工具是扫描日志的工具,扫描完成后的日志会有.complete的后缀,扫描完的日志全部移到history_logs中。采用的是两个脚本来完成的此需求!1.切割日志的脚本如下:
vim nginx_log.sh
#!/bin/bash
#将nginx的日志按照分钟切割
#定义日志文件的路径
logs_path=/opt/nginx/logs/
#定义nginx的进程号的路径
pid_path=/opt/nginx/logs/nginx.pid
#取当前时间的day
dd=`date +%F`
#当前时间的小时
HH=`date +%H`
#当前时间的分钟
mm=`date +%M`
#将日志文件按照分钟切割的关键命令
mv ${logs_path}access.log ${logs_path}access-$dd-$HH-$mm.log
#将当前分钟的进程号杀死的同时,启动下一分钟nginx的进程
kill -USR1 `cat ${pid_path}`
需要将该文件放在/opt/nginx/sbin 目录下,这样方便直接直接执行。
因为是按照每分钟切割日志,所以我们使用crontab命令
#crontab -e
#该语句就是每分钟执行一次该脚本
*/1 * * * * /opt/nginx/sbin/nginx_log.sh
我们可以观察在logs目录下会产生大量的日志,是类似access-2015-09-08-10-39.log 的文件。他们要求是有工具扫描这大量的日志,最后都是以.complete的文件我们需要移动到与logs同级的目录history_logs中的对应日期中去。
2.移动脚本如下:
vim move_logs.sh
#!/bin/bash
#定义日志文件目录
logpath=/opt/nginx/logs/
#前一天的时间
lastdd=` date -d "yesterday" +%Y-%m-%d `
#进入到该目录中
cd /opt/nginx/history_logs
#创建前一天的日志目录
mkdir $lastdd
#开始将扫描过得前一天的日志移动到指定目录中
mv ${logpath}access-$lastdd-*.complete$lastdd/
该脚本需要每天的凌晨执行,时间没必要那么精确。不耽误当天扫描当天的日志即可!
同样我们需要将该脚本放在/opt/nginx/sbin目录下
#crontab -e
30 00 * * * /opt/nginx/sbin/move_logs.sh
我所定的时间为凌晨12:30 执行移动脚本.
到此我们的按分钟切割脚本和移动日志文件脚本完成!
页:
[1]