从 shell 并行调用 SQL 脚本

Parallel invocation of SQL script from shell

我正在使用以下逻辑并行执行 SQL

PID_LIST="start" while [ "$PID_LIST" ] do

$count =0
if [ "z$PID_LIST" = "zstart" ]
then
PID_LIST=""
fi

for PID in $PID_LIST
do
    # echo "Checkpid $PID"
    if kill -0 $PID >/dev/null 2>&1
    then
    PID_LIST_TMP="$PID_LIST_TMP $PID"
    $count =`expr $count  + 1`
    fi
done
PID_LIST=$PID_LIST_TMP

if [ $more_re_to_process -eq "Y" ]
then
while [ $count -le $MAX_INSTANCE ]
do

    #prepare input for sql

    invoke SQL script sql1 with prepared one >LOG_$count
    PID_LIST = PID_LIST="$PID_LIST $!"

done
fi; done

在这个例子中,每当任何 sql 进程完成时,我都会创建一个新进程。 但问题是我最终创建了一个新日志。我希望每当我创建一个新的 SQL 会话时,它都会使用已完成的进程日志文件(如果有的话)。

有人能告诉我该怎么做吗?

假设shell处理数组,您可以将PID作为元素存储在数组中,并在进程完成时仅清除该元素,以便其他进程的索引保持不变;然后在循环中调用新进程扫描已清除的元素;使用数组索引 $count>LOG_$count 使用已完成的进程的日志文件