2、腳本實作
#!/bin/sh
KEYWORDS_TXT="./keywords.txt"
cat /dev/null > ./rst.txt
echo "beginTime=`date`"
cat $KEYWORDS_TXT | while read line
do
echo "line=$line"
echo "curl -XGET
http://100.10.11.130:9200/shx_info_index/shx_info_type/_search-d'
{
\"query\" : {
\"query_string\" : {
\"default_field\" : \"company_name\",
\"query\" : \"$line\"
}
}' >> ./rst.txt 2>&1 & " >> ./sql.txt
icnt=$((icnt+1));
echo "icnt ="$icnt;
done;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
解讀:
1)以上腳本實作了對是以的字段的查詢操作;
2)每次的操作都是讀配置的;
3)未避免讀配置的時間,可将整個post請求操作先存儲到另一個腳本,再一起執行。
2、技術核心點小結
核心點一:
&的目的:實作并發測試,否則就是串行執行任務。
結果導出再執行即可。
核心點二:
時間差計算如下:
1)開始時間:
current=`date "+%Y-%m-%d %H:%M:%S"`
timeStamp=`date -d "$current" +%s`
beginTimeStamp=$((timeStamp*1000+`date "+%N"`/1000000)) #将current轉換為時間戳,精确到毫秒
#echo "beginTime=$currentTimeStamp"
2)結束時間及時間差(曆時時間):
wait
endTimeStamp=$((timeStamp*1000+`date "+%N"`/1000000)) #将current轉換為時間戳,精确到毫秒
#echo "endTime=$currentTimeStamp"
echo "endTime=`date`"
timeSpan=`expr $endTimeStamp - $beginTimeStamp` #時間戳求內插補點。
echo "100次并發測試總耗時=$timeSpan 毫秒"
核心點三:
wait [作業訓示或程序号]
1.等待作業号或者程序号制定的程序退出,傳回最後一個作業或程序的退出狀态狀态。如果沒有制定參數,則等待所有子程序的退出,其退出狀态為0.
2.如果是shell中等待使用wait,則不會等待調用函數中子任務。在函數中使用wait,則隻等待函數中啟動的背景子任務。
3.在shell中使用wait指令,相當于進階語言裡的多線程同步。