Bashスクリプトの並行性と群れ継承の制御

Bashスクリプトの並行性と群れ継承の制御

CentOSのTomcatインスタンスに更新されたコード配布を処理するbash配布スクリプトがありますが、ChefとRunDeckの両方がこのスクリプトを呼び出すことができ、Chefが定期的に実行されるため、競合が発生する可能性があります。

配布スクリプトが同時に2回実行されるのを防ぐ方法は?

標準的な答えは配布ロジックをflock

しかし、デプロイが機能していないTomcatを再起動したため、新しいJavaプロセスはロックを継承し、追加のデプロイスクリプトの実行を防ぎました。

同時実行を防止するか継承を防止する他の方法はありますかflock

ベストアンサー1

flockロックを解除したいプログラムを実行する前に、ロックされているファイル記述子を閉じることができます。

(
  flock -n 9 || exit 120
  (exec 9>&-; tomcat &)
) 9>/var/run/my.lock

おすすめ記事