パラメータ付きのbashスクリプトが1つのインスタンスのみを実行することを確認するにはどうすればよいですか?

パラメータ付きのbashスクリプトが1つのインスタンスのみを実行することを確認するにはどうすればよいですか?

1つの場合は、deployment.sh環境とリリースバージョンの2つのパラメータを使用します。

deployment.sh uat release1
deployment.sh prod release1

いつでもやりたいです。deployment.sh同じ環境とリリースバージョンを使用すると、シングルトンで実行できます。ただし、同時に実行deployment.sh uat release1できますdeployment.sh prod release1

これを行う方法。ありがとう

答え1

これを達成する1つの方法は、複数のプロセスから1つのプロセスのみを選択するために明示的に使用されるファイルロックです。バラよりman flock

#! /bin/bash

category="$1"
if [ 'uat' != "$category" ] && [ 'prod' != "$category" ]; then
    exit 2
fi

(
    flock -n 9 || exit 1
    # ... commands executed under lock ...
) 9>/var/lock/"$category"

関連情報