파일 잠금을 통해 두 개의 Bash 스크립트를 동기화하고 싶습니다. 어떻게 해야 하나요? Zsh에는 zsystem flock
호출이 있지만 Bash에서도 작동하는 좀 더 "껍질 같은" 접근 방식이 있습니까?
답변1
파일 자체를 잠그는 것 외에도 잠금 역할을 하는 파일(잠금 파일)을 만들 수 있습니다. procmail
이를 달성하기 위한 다음과 같은 많은 유틸리티가 있습니다.lockfile
, 데비안에서 이 liblockfile-bin
패키지는 dotlockfile
대부분의 시스템에서 사용할 수 있을 만큼 일반적입니다.
그러나 기본적으로 다음과 같이 요약됩니다.
tempfile=$(mktemp ./lock.XXXX)
lockfile=./lockfile
if ln $tempfile $lockfile ; then
echo got it
# do something
rm $lockfile # after you're done
else
echo did not succeed
fi
rm $tempfile
ln
이와 달리 echo > file
대상이 이미 존재하는 경우 대상을 삭제하지 않고 대신 확인할 수 있는 오류가 발생합니다.
노트:잠그고 싶다면네트워크 파일 시스템, 이 목적을 위해 만들어진 일부 도구를 사용합니다. NFS를 통한 동시 파일 액세스의 의미는... 아무리 말해도 흥미롭습니다.