아래 줄을 사용하는 코드가 있어서 막혔습니다. 온라인으로 검색했지만 잘 이해가 되지 않습니다. 다음과 같이 설정된 기본 정보를 이해하시면 됩니다.
lockfile을 사용하면 하나 이상의 세마포어 파일을 만들 수 있습니다. lockfile이 지정된 모든 파일(지정된 순서대로)을 생성하는 데 실패하면 대기 시간(기본값은 8)초 동안 기다린 후 마지막으로 실패한 파일을 다시 시도합니다.
누구든지 이것에 대해 알려주실 수 있나요? 미리 감사드립니다. 참고: LockFile은 경로 변수입니다.
if lockfile -1 -r0 ${LockFile}
then
답변1
목적은 lockfile
특정 명령의 실행을 보호하는 것입니다.잠금(뮤텍스 잠금이라고도 함). 즉, 다음 프로그램을 고려해보세요:
if lockfile "$LockFile"; then
stuff
more stuff
rm -f "$LockFile"
else
echo 1>&2 "Fatal error: another process has been keeping the lock for too long or the lock file is inaccessible"
exit 3
fi
stuff; more stuff
한 번에 하나의 스크립트 인스턴스만 이 섹션을 실행할 수 있습니다 . 두 번째 인스턴스가 시작되면 두 번째 인스턴스는 이 옵션에 지정된 최대 시간 동안 첫 번째 인스턴스가 완료될 때까지(보다 정확하게는 잠금 파일이 삭제될 때까지) 기다립니다.-TIME
매개변수를 사용하면 -r0
두 번째 인스턴스는 전혀 기다리지 않고 즉시 분기로 이동합니다 else
. 따라서 이 스크립트(또는 더 큰 스크립트의 일부인 경우 스크립트의 이 부분)의 동시 인스턴스를 실행할 수 없습니다.