我想要一个outfile查询为数组中的每个值运行一个进程,以加快从mysql导出数据的过程,就像在多个核心上运行脚本一样。我的bash脚本是:bash脚本在28个内核上运行查询
dbquery=$(mysql -u user -p -e "SELECT distinct(ticker) FROM db.table")
array=($(for i in $dbquery ; do echo $i ; done))
csv()
{
dbquery=$(mysql -u user --password=password -e "SELECT * FROM db2.table2 WHERE symbol = '$i' INTO OUTFILE '/tmp/$i.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")
}
set -m
for i in 'seq 28'; do #trying to run on 28 cores
for j in ${array[@]}; do
csv $j &
done
sleep 5 &
done
while [ 1 ];
do
fg 2> /dev/null; [ $? == 1 ] && break;
done
现在我跑了这一点,因为我希望它也它不导出文件,我无法弄清楚如何杀死进程。你能帮我理解如何解决这个问题,以便它能运行每个代码的outfile查询吗?另外,如何杀死正在运行的当前脚本而不会终止正在运行的其他脚本和程序?
做一个'人xargs'。它可能使事情变得更容易。祝你好运。 – shellter 2013-04-07 13:51:45