테스트 파일 잠금

테스트 파일 잠금

파일에 대한 동시 액세스를 피하기 위해 파일을 잠그는 스크립트가 있습니다. 두 개의 다른 터미널에서 동일한 스크립트를 동기식으로 실행하여 작동하는지 확인하려면 어떻게 해야 합니까?

이게 스크립트야

#!/bin/bash

(
  flock -xn 200
  trap 'rm /tmp/test_lock.txt' 0
  RETVAL=$?
  if [ $RETVAL -eq 1 ]
  then
    echo $RETVAL
    echo  "file already removed"
    exit 1
  else
    echo "locked and removed"
  fi
) 200>/tmp/test_lock.txt

답변1

당신은 그것을 실행할 수 없습니다동기적으로, 그러나 sleep 60대괄호 안의 잠금 섹션에 하나를 배치하면 하나의 인스턴스만 동시에 실행할 수 있음을 스스로 증명할 수 있습니다. 아니면.


당신은 당신이 가지고 있는 것이 효과가 없다는 것을 알게 될 것입니다. 이는 잠금 파일을 제거했기 때문입니다. 즉, 잠금을 획득하려는 새로운 프로세스는 이미 잠금을 보유한 파일이 아닌 다른 파일에서 수행하게 됩니다.

관련 정보