需求描述:
/root/query路径下有如下sql脚本,需要调用psql命令将每个sql脚本并发执行10次,记录每个脚本并发执行的时间
[root@oushu01 ~]# ll /root/query
总用量 0
-rw-r--r-- 1 root root 0 9月 26 15:56 query1.log
-rw-r--r-- 1 root root 0 9月 26 15:55 query1.sql
-rw-r--r-- 1 root root 0 9月 26 15:55 query2.sql
脚本如下:
#!/bin/bash
queryDir=/root/query/
logDir=/root/query/log
# 10 concurrency examples
# If you want to skip some sql execution, grep -v specific sql is fine
for fileName in `ls $queryDir | grep sql`
do
logFileName="10-"${fileName%\.*}".log"
logFile=${logDir}${logFileName}
echo $logFile
sqlFile=${queryDir}${fileName}
echo $sqlFile
# Loop through 10 times to call the concurrent script
for i in {1..10}
do
nohup psql -d tpch -af $sqlFile -U oushu -h oushu01 -p 5432 >> $logFile 2>&1 &
done
processStatus="running"
while [ $processStatus = "running" ]; do
# The amount of time that the process sleeps, in seconds, for example 60 seconds
sleep 60
nowStatus=`ps -ef | grep tpch | grep -v grep`
if [ $? -ne 0 ]
then
echo "The process does not exist";
processStatus="successed"
else
echo "The process exists";
fi
done
done