하나 있으면 deployment.sh
환경과 릴리스 버전이라는 두 가지 매개변수를 사용합니다.
deployment.sh uat release1
deployment.sh prod release1
언제든지 하고 싶습니다. deployment.sh
동일한 환경과 릴리스 버전을 사용하면 싱글톤으로 실행할 수 있습니다. 그러나 동시에 실행할 deployment.sh uat release1
수 deployment.sh prod release1
있습니다.
이를 수행하는 방법. 감사해요
답변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"