if-else를 사용한 클러스터링이 안전한가요?

if-else를 사용한 클러스터링이 안전한가요?

병렬로 실행되는 두 개의 쉘 스크립트가 있지만 한 번에 하나씩도 있습니다. 두 스크립트 모두 초기 설정 단계를 사용하므로 시간이 걸리고 동시에 실행할 수 없습니다.

나머지의 병렬 실행을 허용하기 위해 다음을 사용하여 제어 흐름에서 설정 단계를 래핑합니다.flock기반으로이 제안.

이것~인 것 같다잘 작동하지만 if-else 구문이 완전히 안전한지는 잘 모르겠습니다. 여기에 제가 놓친 숨겨진 문제가 있나요?

set -euxo pipefail
(
    # Only run setup if we're the first to acquire the lock
    if flock -x -n 200 ; then
        # Time-consuming setup that can't be run in parallel
    else
        # Wait for the lock to be released and then continue, timeout on 600s
        flock -x -w 600 200;
    fi
) 200>/tmp/setup.lock

# Rest of the script that relies on setup being done

관련 정보