linux切割访问日志,linux shell命令切割nginx访问日志

小小菜鸟脚本,菜鸟思惟,见谅!!!

linux

1、首先是日志切割

nginx

#! /bin/bushshell

#######################################################################################服务器

#方法封装,切割日志oop

#author:谭家俊   date:2015-08-20   funtion:linux按天分割nginx访问日志,而且保3天内的。学习

########################################################################################spa

nginx_log="/usr/local/nginx/logs/access.log"  #nginx访问日志目录调试

new_log_path="/usr/local/nginx/logs"          #切割后的目录日志

today=`date +%Y-%m-%d`                        #今天的时间日期  io

function sortTheLog(){

rm -rf ${new_log_path}/${today} #删除一下今天的日志文件目录,避免以前手动有产生同样名字的文件名字

mkdir ${new_log_path}/${today}  #建立记录今天的日志目录/usr/local/nginx/logs/2015-08-20(今天是2015-08-20的话)

echo ${new_log_path}            #调试信息的输出

cp -rf ${nginx_log} ${new_log_path}/${today}  #将今天的nginx访问日志access.log复制到新建的日志目录下

echo "" |cat > ${nginx_log}     #清空nginx的日志文件access.log

#这里是写一个for循环玩玩而已,打印前3天的日期

for loop in 1 2 3

do

today_n=`date -d  "${loop} days ago" +%Y-%m-%d`

echo ${today_n}

done

#for end

//由于是要保留3天的日志,因此这里删除前4天的日志

days_ago_4=`date -d "4 days ago" +%Y-%m-%d`  #前4天的日期

del_path="${new_log_path}/${days_ago_4}"     #删除的路径

#echo "$del_path"

# read ${new_log_path}/days_ago_4

if [ -d "$del_path" ]                        #路径若是存在,则删除

then

echo ""

rm -rf ${del_path}

else

echo ""

fi

}

sortTheLog 调用方法

2、日志检查

#! /bin/bush

##################

#方法封装

#排查方法   入口:#param1:错误代码前缀(int)   #param:错误代码后缀(int)  返回:无

function check(){

flag=0   #while循环入口

end=$2   #输入参数2,循环结束

start=$1 #输入参数1,循环开始

while [ $flag -le $end ]  #若是start>end,结束循环

do

s=$[$start+${flag}]

state="HTTP/1.1\" ${s}"  #遍历服务器每种错误状态码,如500,501,502

#echo ${s}

#echo ${state}

#echo `grep "HTTP/1.1\" 404" ${new_log_path}/${today}/access.log | wc -l`

#echo `grep "${state}" ${new_log_path}/${today}/access.log | wc -l`           #根据错误代码统计日志中错误行数

error_num=`grep "${state}" ${new_log_path}/${today}/access.log | wc -l`  #匹配今天的日志有没这种状态码的记录行,有就统计错误数量记录

if [ $error_num -gt 0 ]                                                      #大于0,有错

then

echo "${state} error..."

#echo "服务器有错误啦!" | mail -s "发现服务器访问日志错误代码" 15986943045@163.com

mail -s "发现服务器访问日志错误代码" 15986943045@163.com < ${new_log_path}/${today}/access.log    #邮件通知,把错误日志以邮件发送

fi

flag=$[$flag+1]

done

}

#调用排查方法,排查4xx(请求错误)

check 400 14

#调用排查方法,5xx(服务器错误)

check 500 5

将以上的内容保存成shell脚本,加入定时器便可天天按时自我分割和排查...也算是本身学习的小小例子吧!!!

注意:在作发送邮件的时候,邮箱尽可能不要用qq邮箱,会被拦截收不到的。我用的是163邮箱,并且进行了白名单设置。因此接收邮件挺快。

7222e59db6fe4397a1122bf0.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值