脚本学习 game.sh
#!/bin/bash #game_error.sh if [[ $# -lt 1 ]]; then #$#表示参数个数 -lt小于 echo "Usage: game_error.sh time[20170710]" exit fi source ./remote_cmd.sh #相当于include MYSQL_MFW="/usr/local/mysql/bin/mysql -h10.84.248.207 -ulogstat -plogstat123 -Ddb_mfw -N" #-D:指定连接的数据库 -N:--skip-column-names dump_date=$1 #第一个参数 tmp_fifofile="/tmp/$$.fifo" #$$:Shell本身的PID(ProcessID) mkfifo $tmp_fifofile #创建fifo文件 exec 6<>$tmp_fifofile #关联FIFO文件和fd6 rm -f $tmp_fifofile #将fd6指向fifo类型 thread=20 for ((i=0;i<$thread;i++));do echo done >&6 #向fd6输入20个回车 dst_dir=/data/game_error if [ ! -d "$dst_dir" ] then mkdir -p $dst_dir fi rm ${dst_dir}/* ${MYSQL_MFW} -e "select division,node from t_service where app='MOBA' and server='GameServer';" | while read line #-e:执行 循环读到line里面 do read -u6 #从6号fd中读取 { zone_id=`echo $line |awk '{print $1}' |cut -d'.' -f3` #$1:moba.zone.10 zone_id:10 zone_ip=`echo $line |awk '{print $2}'` #$2:192.168.40.220 zone_ip:192.168.40.220 source_dir="/data/applog/MOBA/moba.zone.${zone_id}/GameServer/MOBA.GameServer_error_${dump_date}.log" getfile mulong@${zone_ip} ${source_dir} ${dst_dir}/MOBA.GameServer_error_${dump_date}_${zone_id}.log #scp echo >&6 }& done sleep 5 exec 6>&- # -F"|" 以|分割 第6列不为空 -r降序 cat ${dst_dir}/MOBA.GameServer_error_*.log|grep GameServer|awk -F"|" '{if($6!="") a[$6]++}END{for (i in a) printf("%-8s %s\n", a[i],i)}'|sort -r -n -k1 > error_g_${dump_date}.txt cat error_g_${dump_date}.txt echo "success"