shell脚本练习函数与普通运算(查询日志)

22 篇文章 0 订阅
9 篇文章 0 订阅

       项目使用log采用log4cxx并加以封装,生成的文件名格式固定,形如 scenesserver21.log.190930-01 这种格式,即服务器名字加服务器编号,末尾采用年月日 - 时间缩写 进行命名。

        每次查询之前产生日志的时候会比较麻烦,需要先查询当前是哪天,然后输入对应文件名。写个脚本将输入时间这部交给程序去做,可以方便不少。

#!/bin/bash

######################################
# 查找一段时间内的日志信息
# 集成 grep "test" ~/log/functionserver.log.190930-01 的处理命令
#
#
# 用法:sh greplog.sh test sc hour
# 参数:分别为待检索字符串、目标服务器、时间
# 其他:目标服务器与时间可省略,默认为sc、hour
# 时间:2019/09/30
######################################

findserverbuild()
{
	if [ $# -eq 1 ]
	then
		argument=$1
	else
		argument=$1$2
	fi
	case $server in
		fu)
			findserver=~/log/functionserver.log.$argument
		;;
		sc)
			findserver=~/log/functionserver.log.$argument
		;;
		*)
			echo "Find server error!!!"
			exit 1
	esac
}






if [ $# -lt 1 ]
then
	echo "Argument too less!!!  (eg: ./greplog.sh abc fu hour)"
	exit 1
fi
word=$1
server=$2
findtime=$3
if [[ $findtime == "" ]]
then
	findtime="hour"
fi
if [[ $server == "" ]]
then
	server="sc"
fi

case $findtime in
	hour)
		timetmp=`date +"%Y%m%d%H"`
		timetmp=$(expr $timetmp % 100000000)
		timetmp1=$(expr $timetmp / 100)
		timetmp2=$(expr $timetmp % 100)
		if [[ $timetmp2 -ge 10 ]]
		then
			findserverbuild $timetmp1 "-"$timetmp2
		else
			findserverbuild $timetmp1 "-0"$timetmp2
		fi
	;;
	day)
		timetmp=`date +"%Y%m%d"`
		timetmp=$(expr $timetmp % 1000000)     #应该不会有2000年的日志  不处理了
		findserverbuild $timetmp "*"
	;;
	month)
		timetmp=`date +"%Y%m"`
		timetmp=$(expr $timetmp % 10000)
		findserverbuild $timetmp "*"
	;;
	all)
		findserverbuild "*"
	;;
	*)
		echo "Find time error!!!"
		exit 1
case

grep -ir --color $1 $findserver

        这个脚本的特殊性太高,因为文件名处理全部是按照本项目的log文件名处理的,移植性相当差。不过可以用来练习一下shell脚本基本语法与函数使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值