shell脚本存档

utilsh

1、获取文件名为Storage.php的脚本,根据10分位分钟数拉起不同的脚本,通过合理设置crontab,让1h内每个脚本执行一次。

#! /bin/bash

# 入库表互不影响,并行入库,等最迟的脚本执行完毕退出

file_count=0
store_scripts=()

function GET_SCRIPT_FILE(){
    for file in *;
        do
        if [ -f ${file} ] && [ ${file} == "Storage.php" ] ;then
                #获取全部入库脚本的绝对路径
                ((file_count++))
                store_scripts[${file_count}]=$(echo `pwd`/${file})
        elif [ -d ${file} ];then
                cd ${file}
                GET_SCRIPT_FILE
                cd ..
        fi
        done
}

GET_SCRIPT_FILE
echo "There are ${file_count} scripts !"

#取当前的分钟数,模10后可能是 0~5 共6个数
minute=`date '+%M'`
seed=$((10#${minute}/10))
counter=0
for script in ${store_scripts[@]}; do
  echo ${script}
  #当第n个脚本,n%6==seed时执行;这样crontab设置每10分钟启动一次,1h内可以保证所有脚本运行一遍
  if [ $((${counter}%6)) == ${seed} ];then
    echo "Run!"
    php ${script} && echo "${script} Finished!" &
  else
    echo "Random Num is ${seed},and Counter is ${counter},Skip!"
  fi

  let counter=${counter}+1
done

wait

2、删除MySQL中指定前缀名的表

#! /bin/bash

#db名字
db=$1
#table名字
table=$2

params=`echo $#`
echo "your input param is db=$1 and table prefix like $2"


if [ $params -lt 2 ]
then
 echo "Too Many Params,Can Only Accept Two Params"
 exit
fi

#connect mysql and read tb names
var=$(mysql -h192.168.241.175 -P3306 -uhomework -phomework  -e"use '$1';show tables like '$2%';")

count=0
#read table names
for i in $var;
do
 let count=$count+1
 if [ $count -ne 1 -a $count -ne 2 ]
 then
  #delete from db
  echo "deleting ...$i"
#  mysql -h192.168.241.175 -P3306 -uhomework -phomework  -e"use '$1';drop table $i"
 fi
done

3、删除两个db的差集表

#! /bin/bash


#获取线上db中存在的表名列表
online_tables=$(mysql -h192.168.5.58 -P6147 -uzyb_rd_r -ppdrucy2Jw9pu4Su -D homework_fudao -e"show tables;")

local_tables=$(mysql -h192.168.241.175 -P3306 -uhomework -phomework -D homework_fudao -e"show tables;")

count=0
#read table names
for i in $local_tables;
do
 let count=$count+1

 if [ $count -ne 1 -a $count -ne 2 ] && [[ ! "$online_tables" =~ "$i" ]]
 then
  #delete from db
  echo "deleting ...$i"
  #mysql -h192.168.241.175 -P3306 -uhomework -phomework -D homework_fudao -e "drop table $i"
 fi
done

4、七色球

#!/bin/bash

RED_COL='\033[91m'
BLUE_COL='\033[34m'
NONE_COL='\033[0m'

red_ball=""

while :
do
  clear
  echo '--机选双色球--'
  tmp=$[RANDOM%33+1]
  echo "$red_ball" | grep -q -w $tmp && continue


  red_ball+=" $tmp"

  echo -en "$RED_COL$red_ball$NONE_COL"
  count=$(echo "$red_ball" | wc -w)
  if [ $count -eq 6 ];then
    bule_ball=$[RANDOM%16+1]
    echo -e "$BLUE_COL $bule_ball$NONE_COL"
    break
fi

sleep 1
done

5、es快速查询

#!/bin/bash


INSTANCE="es.basic.suanshubang.com:9220"
AUTH=
ACTION="search"
INDEX=""
BODY="$3"
ISONLINE=false
METHOD="GET"

is_true()           { [[ "$1" = 'true' ]];      }


swan() {
    INSTANCE=es.basic.suanshubang.com:9220
    ACTION=_doc/_search
    INDEX=zyb_swan_workflow;
    BODY="${2:-}"

    is_true $ISONLINE && { INSTANCE=10.33.132.168:9200; AUTH=zybkefu:zybkefu; }

    case "$1" in
        search) ;;
        get)    BODY='{"query":{"match":{"taskId":'$2'}}}';;
        set)    BODY="$2";METHOD="POST"; ACTION=_doc/_update_by_query;;
        index)  ACTION=_doc/_mapping;;

        *) echo "请指定action"; exit 1;;
    esac

}
cuckoo() {
    INDEX=zyb_cuckoo_knowledge;
    ACTION=_doc/_search
    BODY="${2:-}"
    is_true $ISONLINE && { INSTANCE=bzres-f.zuoyebang.cc:80; AUTH=zybkefu:zybkefu; }
    is_true $ISONLINE && { INSTANCE=10.33.132.168:9200; AUTH=zybkefu:zybkefu; }

    case "$1" in
        search) ;;
        get)    BODY='{"query":{"match":{"taskId":'$2'}}}';;
        set)    BODY="$2";METHOD="POST"; ACTION=_doc/_update_by_query;;
        index)  ACTION=_doc/_mapping;;

        *) echo "请指定action"; exit 1;;
    esac
}
set -- $(getopt e "$@")

while [ -n "$1" ]; do
    case "$1" in
        -e) ISONLINE=true;;
        --) shift; break ;;
        *) echo "$1 is not option";exit 1;;
    esac
    shift
done

MODULE="$1"
shift


case "$MODULE" in
    swan) swan "$@";;
    cuckoo) cuckoo "$@";;

    *)   echo "请指定模块";exit 2;;
esac

set -- "http://$INSTANCE/$INDEX/$ACTION" -H 'Content-Type: application/json' -d "$BODY" -X $METHOD

if [ -n "$AUTH" ]; then
    set -- "$@" -H "Authorization: Basic $(echo -n "$AUTH" | base64)"
fi

curl "$@"

此处 set -- xx 的作用是 将xx放到参数列表中,可以用$@取全部参数列表。

shell坑

1、value too great for base (error token is "08")
aa=08会被shell当做八进制数字,加个标注10#$aa,解决。
https://www.cnblogs.com/patf/p/4701472.html

2、centos将 sh 软链 /bin/dash,dash不支持大多数的bash语法和数据结构,
在容器中启动shell时,用/bin/bash 代替 sh

将sh指向bash

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 【脚本1】打印形状 打印等腰三角形、直角三角形、倒直角三角形、菱形 【脚本2】截取字符串 现有一个字符串如下: h...
    学无止境_9b65阅读 436评论 0 1
  • 本文用于记录学习和日常中使用过的shell脚本 【脚本1】打印形状 打印等腰三角形、直角三角形、倒直角三角形、菱形...
    zwb_jianshu阅读 5,520评论 1 5
  • 一、Vim 文本编辑器 在 Linux 系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数 1. Vim...
    Ricsy阅读 585评论 0 7
  • Linux习惯问题: 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。ctrl + ...
    光着脚的鞋阅读 4,482评论 0 16
  • shell:用户通过shell与操作系统内核进行交互。cat /etc/shells 查看当前系统有哪些shel...
    xyzcmu阅读 294评论 0 0