備忘録です.
シミュレーションなどで同じスクリプトを何回も回したい時があると思います.
その際にコア数分だけ並列に実行します.
TIMEを必要回数分設定し,write scriptと書いてある部分に実行したいスクリプトを書いてください.
#!/bin/bash
TIME=22
core=`nproc`
quo=$(( $TIME / $core ))
mod=$(( $TIME % $core ))
[ $mod -eq 0 ] && rep=$quo || rep=$(( $quo + 1 ))
for j in `seq 1 $quo`;do
echo $j"/"$rep
for i in `seq 1 $core`;do
n=$(( $core * ($j - 1) + $i ))
# write script
echo $n
done
wait
done
echo $rep"/"$rep
for i in `seq 1 $mod`;do
n=$(( $core * $quo + $i ))
# write script
echo $n
done