3

この KornShell (ksh) スクリプトをセットアップして、tst1.sql の完了後に SQL スクリプト 2、3 を並行して実行し、2、3 の完了後に tst4.sql を実行するにはどうすればよいですか? これは可能ですか?

#/usr/bin/ksh
#SET ENVIRONMENT ORACLE

sqlplus user1/pw @/home/scripts/tst1.sql
sqlplus user1/pw @/home/scripts/tst2.sql
sqlplus user1/pw @/home/scripts/tst3.sql
sqlplus user1/pw @/home/scripts/tst4.sql
exit 0
4

1 に答える 1

3

最初のコマンドは同期的に実行する必要があります...

最後の 2 つのコマンドをバックグラウンド プロセスとして開始すると (コマンドの最後に & を追加)、それらは並行して実行されます。

最後の 2 つのプロセスが完了するまでスクリプトを待機させてから終了しますか?

このようなものが動作するはずです:

  sqlplus user1/pw @/home/scripts/tst1.sql
  sqlplus user1/pw @/home/scripts/tst2.sql &
  pid2=$!
  sqlplus user1/pw @/home/scripts/tst3.sql &
  pid3=$!
  # pseudo-code:
  # while (`ps -p"$pid2,$pid3" | wc -l` != "1");
  sqlplus user1/pw @/home/scripts/tst4.sql
于 2013-08-13T04:37:36.483 に答える