网上有许多按照天切割日志的。但是由于应用需要,对该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 执行移动脚本.
到此我们的按分钟切割脚本和移动日志文件脚本完成!
时间: 2024-07-30 13:41:30