Shell - 目录、文件、zookeeper监控

#功能:目录中文件变化监控,arg1-目录,arg2-文件名通配符,输出-新产生的文件列表
function dir()
{
	local dir=$1
	local name=$2
	local int=$3
	local tmp1=/tmp/f_mon_dir_temp1  #旧文件列表
	local tmp2=/tmp/f_mon_dir_temp2  #新文件列表
	local count=0
	>$tmp1
	int=${int:-1}
	while true;do
		find $dir -name "$name" > $tmp2
		count=`grep -vxFf $tmp1 $tmp2|wc -l`
		if [ $count -gt 0 ];then
			printf "\r"
			grep -vxFf $tmp1 $tmp2|xargs -i ls -l {}
			cat $tmp2>$tmp1
		fi
		sleep $int
		printf '.'
	done
}

#功能:文件内容监控,arg1-文本文件路径,arg2-配置字符串,输出-匹配的数据行增长情况
function txt()
{
	local file=$1
	local str=$2
	local int=$3
	local pid=
	local rows=0
	local row1=0
	local tmp1=/tmp/f_mon_txt_temp1
	local count1=0   #新增加的过滤行
	local count2=0   #总的过滤行
	int=${int:-1}

	rows=`cat $file|wc -l`
	while true;do
		sed -n "$rows,\$p" $file >$tmp1
		row1=`cat $tmp1|wc -l`
		rows=$((rows+row1))
		count1=`cat $tmp1 | grep $str | wc -l`
		if [ $count1 -gt 0 ];then
			printf "\r"
			count2=$((count2+count1))
			echo `date +%Y-%m-%d_%H:%M:%S` Count:$count2
		fi
		sleep $int
		printf '.'
	done
}

#功能:zk某个znode某个属性的监控,arg1-znode,arg2-属性,输出-变化及其发生时间
function zk()
{
	local zonde=$1
	local str=$2
	local int=$3
	int=${int:-1}
	local tmp1=/tmp/f_mon_zk_temp1  #zk信息
	local val1=
	local val2=
	
	while true;do
		$ZOOKEEPER_HOME/zkCli.sh &>$tmp1 <<EOF
		get $zonde
		quit
EOF
		val2=`cat $tmp1 | grep = | grep $str`
		if [ "$val2" != "$val1" ];then 
			printf "\r"
			echo `date +%Y-%m-%d_%H:%M:%S` $val2
			val1=$val2
		fi
		sleep $int
		printf '.'
	done
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值