かべぎわブログ

ブログです

waitで別プロセスの終了を待ち合わせてから実行する

概要

シェルスクリプト中で別プロセスでコマンドを実行して、その終了を待ち合わせてから先に進むみたいな並列実行を実現してみます。

スクリプト

こんなかんじ。
waitコマンドは指定したプロセスIDを待ち合わせることができます。
それを利用します。

#!/bin/bash

command1() {
  sleep 1
  echo 'command1'
  date
} 
command2() {
  sleep 2
  echo 'command2'
  date
} 
command3() {
  sleep 3
  echo 'command3'
  date
} 

command1 &
pid1=${!}
command2 &
pid2=${!}
command3 &
pid3=${!}

wait ${pid1} ${pid2} ${pid3}
echo 'done'

実行してみる

実行するとこんなかんじ。
同時に動いていそうですね。

$ ./wait.sh 
command1
Sun Mar  8 09:00:29 UTC 2020
command2
Sun Mar  8 09:00:30 UTC 2020
command3
Sun Mar  8 09:00:31 UTC 2020
done

おわりに

つかっていきたいですね。