我想要一個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