utilsh
1、獲取文件名為Storage.php的腳本桥温,根據(jù)10分位分鐘數(shù)拉起不同的腳本扑浸,通過合理設(shè)置crontab烧给,讓1h內(nèi)每個腳本執(zhí)行一次。
#! /bin/bash
# 入庫表互不影響喝噪,并行入庫础嫡,等最遲的腳本執(zhí)行完畢退出
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 !"
#取當(dāng)前的分鐘數(shù),模10后可能是 0~5 共6個數(shù)
minute=`date '+%M'`
seed=$((10#${minute}/10))
counter=0
for script in ${store_scripts[@]}; do
echo ${script}
#當(dāng)?shù)趎個腳本酝惧,n%6==seed時執(zhí)行榴鼎;這樣crontab設(shè)置每10分鐘啟動一次,1h內(nèi)可以保證所有腳本運行一遍
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放到參數(shù)列表中平项,可以用$@取全部參數(shù)列表赫舒。
shell坑
1、value too great for base (error token is "08")
aa=08
會被shell當(dāng)做八進(jìn)制數(shù)字闽瓢,加個標(biāo)注10#$aa
,解決接癌。
https://www.cnblogs.com/patf/p/4701472.html
2、centos將 sh 軟鏈 /bin/dash,dash不支持大多數(shù)的bash語法和數(shù)據(jù)結(jié)構(gòu)扣讼,
在容器中啟動shell時缺猛,用/bin/bash
代替 sh
。
將sh指向bash