脚本学习 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
", a[i],i)}'|sort -r -n -k1 > error_g_${dump_date}.txt
cat error_g_${dump_date}.txt
echo "success"
原文地址:https://www.cnblogs.com/zzyoucan/p/7290730.html