失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > shell统计游戏活跃用户数之改进过程分析

shell统计游戏活跃用户数之改进过程分析

时间:2022-01-30 10:32:10

相关推荐

shell统计游戏活跃用户数之改进过程分析

所管理游戏服务器在维护过程中需经常查看活跃用户数,由于开发部门后台管理系统还不完善,所以需要我协助查询,应为要经常性不定时的去查询这个数据,所以就想到了用shell脚本来提高工作效率,一下便是写此脚本的过程,分别用不同版本表示。

注:小弟初学shell,脚本难免有不妥的地方,大牛勿喷,望能给初学shell的朋友一点点的参考,如对脚本有什么看法,烦请畅所欲言。

v0.1

#!/bin/bashHOST="**.**.**.**"USER="******"PASS="******"DATE=`date+%Y-%m-%d`ALL=`mysql-h${HOST}-u${USER}--password=${PASS}<<EOFuselogdb;SELECTCOUNT(DISTINCTfind)FROMplayer_log5WHERETIME>"${DATE}00:00:00"ANDTIME<="${DATE}23:59:59"ANDTYPE=400;EOF`NEW=`mysql-h${HOST}-u${USER}--password=${PASS}<<EOFuselogdb;selectcount(*)fromlogdb.player_log5wheretime>="${DATE}00:00:00"andtime<="${DATE}23:59:59"andtype=402;EOF`echo总登录数:${ALL}|awk'{print$1,$4}'ALLNUM=`echo${ALL}|awk'{print$3}'`echo新创建数:${NEW}|awk'{print$1,$3}'NEWNUM=`echo${NEW}|awk'{print$2}'`#echo-e活跃用户数:`expr$ALLNUM-$NEWNUM`echo-e活跃用户数:"\033[40;35m`expr$ALLNUM-$NEWNUM`\033[0m"

说明:

1.活跃用户数粗略使用"总登录人数(ALL)-本日新创建用户数(NEW)"来计算

2.v0.1只能查询本日活跃用户数,如需查询某个时间段的活跃用户数,需修改脚本中的时间

鉴于以上不方便查看固定时间段内活跃用户数,固对脚本作了修改为v0.2

#!/bin/bashHOST="**.**.**.**"USER="******"PASS="******"DATE=`date+%Y-%m-%d`functiondefault(){ALL=`mysql-h${HOST}-u${USER}--password=${PASS}<<EOFuselogdb;SELECTCOUNT(DISTINCTfind)FROMplayer_log5WHERETIME>"${DATE}00:00:00"ANDTIME<="${DATE}23:59:59"ANDTYPE=400;EOF`NEW=`mysql-h${HOST}-u${USER}--password=${PASS}<<EOFuselogdb;selectcount(*)fromlogdb.player_log5wheretime>="${DATE}00:00:00"andtime<="${DATE}23:59:59"andtype=402;EOF`echo总登录数:${ALL}|awk'{print$1,$4}'ALLNUM=`echo${ALL}|awk'{print$3}'`echo新创建数:${NEW}|awk'{print$1,$3}'NEWNUM=`echo${NEW}|awk'{print$2}'`#echo-e活跃用户数:`expr$ALLNUM-$NEWNUM`echo-e活跃用户数:"\033[40;35m`expr$ALLNUM-$NEWNUM`\033[0m"}functioncustom(){ALL=`mysql-h${HOST}-u${USER}--password=${PASS}<<EOFuselogdb;SELECTCOUNT(DISTINCTfind)FROMplayer_log5WHERETIME>"$1$2"ANDTIME<="$3$4"ANDTYPE=400;EOF`NEW=`mysql-h${HOST}-u${USER}--password=${PASS}<<EOFuselogdb;selectcount(*)fromlogdb.player_log5wheretime>="$1$2"andtime<="$3$4"andtype=402;EOF`echo总登录数:${ALL}|awk'{print$1,$4}'ALLNUM=`echo${ALL}|awk'{print$3}'`echo新创建数:${NEW}|awk'{print$1,$3}'NEWNUM=`echo${NEW}|awk'{print$2}'`#echo-e活跃用户数:`expr$ALLNUM-$NEWNUM`echo-e活跃用户数:"\033[40;35m`expr$ALLNUM-$NEWNUM`\033[0m"}if[$#=0];thendefaultelsecustom$1$2$3$4fi

说明:

1.v0.2加入了if判断,如果传入脚本没有参数则查看今日活跃用户数,如果有参数则查看参数内时间段的活跃用户数(如果参数错误无法判断,这个用政策匹配太难做了,尤其是月份的匹配,每个月还不一致,故放弃)

2.脚本太长,太繁琐

基于以上两点原因,从优化脚本长度,更加人性化方面对脚本做了修改,形成了一下v0.3版本

v0.3

#!/bin/bash#writein/05/07bylfHOST="**.**.**.**"USER="******"PASS="******"DATE=`date+%Y-%m-%d`functioncustom(){ALL=`mysql-h${HOST}-u${USER}--password=${PASS}<<EOFuselogdb;SELECTCOUNT(DISTINCTfind)FROMplayer_log5WHERETIME>"$1$2"ANDTIME<="$3$4"ANDTYPE=400;EOF`NEW=`mysql-h${HOST}-u${USER}--password=${PASS}<<EOFuselogdb;selectcount(*)fromlogdb.player_log5wheretime>="$1$2"andtime<="$3$4"andtype=402;EOF`echo总登录数:${ALL}|awk'{print$1,$4}'ALLNUM=`echo${ALL}|awk'{print$3}'`echo新创建数:${NEW}|awk'{print$1,$3}'NEWNUM=`echo${NEW}|awk'{print$2}'`#echo-e活跃用户数:`expr$ALLNUM-$NEWNUM`echo-e活跃用户数:"\033[40;35m`expr$ALLNUM-$NEWNUM`\033[0m"}if[$#=0];thencustom${DATE}00:00:00${DATE}23:59:59elseif[$#!=4];thenecho"参数错误,参数格式为[-05-0700:00:00-05-0714:59:59]"elsecustom$1$2$3$4fifi

说明:

1.脚本优化了代码长度,无需太过繁琐的用两个函数来表现

2.更加人性化,当输入错误参数个数时,人性化的提示参数的个数以及各式

如果觉得《shell统计游戏活跃用户数之改进过程分析》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。