2006年03月28日

[Unix] 複数コマンド並行実行

waitコマンドの終了ステータスで、バックグラウンドで実行(後ろに「&」を付加)したコマンドの終了ステータスが取得できるようだ。
#!/bin/sh
TIMES=3

# 複数コマンドを平行して実行
idx=0
while test $idx -lt $TIMES
do
    ./hoge.sh $idx &
    eval pid$idx=\$! # プロセスID
    idx=`expr $idx + 1`
done

# 各コマンドが終了するまで待機
idx=0
while test $idx -lt $TIMES
do
    eval pid=\$pid$idx
    wait $pid
    eval rc$idx=\$?
    idx=`expr $idx + 1`
done

# 全て成功したか確認
idx=0
while test $idx -lt $TIMES
do
    eval rc=\$rc$idx
    test $rc -eq 0 || exit 1
    idx=`expr $idx + 1`
done

exit 0


この記事へのトラックバックURL