: bash flock: exit if can't acquire lockbash flock : 왜 200입니까? 스레드에 관한
누군가가 '200'무엇을 나에게 설명 할 수 있다면 나는 감사 할 것 스탠드.
나는 flock에 대해 읽었으며 파일 설명자를 지정하는 것이 200이지만이 숫자에 대해 어떤 점이 좋을까요?
: bash flock: exit if can't acquire lockbash flock : 왜 200입니까? 스레드에 관한
누군가가 '200'무엇을 나에게 설명 할 수 있다면 나는 감사 할 것 스탠드.
나는 flock에 대해 읽었으며 파일 설명자를 지정하는 것이 200이지만이 숫자에 대해 어떤 점이 좋을까요?
Theres는 숫자 200에 특별한 의미가 없습니다. 이것은 단지 flock
명령의 맨 페이지에서 사용 된 예제입니다. 큰 숫자가 될 수 있으므로 스크립트 중에 여는 다른 파일의 파일 설명자와 충돌하지는 않습니다. 귀하의 코멘트에서
, 당신에 대해 물어 :
(
flock -e 200
echo "In critical section"
sleep 5
) 200>/tmp/blah.lockfile
echo "After critical section"
괄호 ()
서브 쉘을 만들; 상위 프로세스와 별도로 새 프로세스. 200>/tmp/blah.lockfile
은 해당 프로세스가 파일 설명자 200에 쓰기 위해 /tmp/blah.lockfile
을 열도록합니다. 괄호 안의 명령은 해당 셸 내에서 실행됩니다.
flock -e 200
은 파일 설명자 200이 가리키는 파일에 배타적 잠금을 얻습니다. 배타적 잠금은 해당 파일에 대한 잠금을 독점 또는 공유 중 하나를 얻으려는 다른 모든 사람이이 잠금이있을 때까지 차단 (대기)한다는 것을 의미합니다. 그들은 시간 초과되거나 블록하지 않을 것을 요청하면 실패합니다. 따라서 나머지 서브 쉘 (echo
및 sleep
명령) 동안 잠금은 해당 서브 쉘에 의해 유지되고 다른 누구도 해당 잠금을 확보 할 수 없습니다. 서브 쉘이 끝나면 파일은 닫히고 잠금은 해제됩니다.
감사합니다. 나는 스크립트를 bash하는 것이 처음이다. 나머지 코드에 대해 설명해 주시겠습니까? ( flock -e 200 echo "중요 섹션" sleep 5 ) /tmp/blah.lockfile echo " 임계 부분 이후 " – Subway
@Rapher 어떻게 작동하는지 설명하는 나의 대답을 편집했습니다. –
감사! 그러나 내가 이해하지 못하는 한가지가 있습니다. 서브 쉘이 필요한 이유는 무엇입니까? 왜 코드를 실행하기 전에 자물쇠를 잡고 코드 실행이 끝난 후에 그냥 놓아 두는 것이 좋을까요? – Subway
이것은 임의의 파일 설명자 번호입니다. – Mat