그래서 프로세스 간 잠금을 원하는 것은 flock
라는 명령은 유닉스 세계에서 당신의 친구. 그것은 OS 레벨에서 원자 적 연산으로 구현되며 이런 종류의 일에 매우 유용합니다. more about it here을 읽을 수 있습니다. 여기 당신이 그것을 사용하는 방법입니다 : 몇 가지 트릭이 여기에있다
# Wait for lock on (fd 222) for 10 seconds
(flock -w 10 222 || exit 1
{
# Do the operations you want to here
}) 222>/path/to/lockfile
. 첫째, 일반적으로 출력 리다이렉션을 사용할 때 bash는 파일을 열기 전에 먼저 파일을 엽니 다. 여기에 우리가 ()
을 가지고 있기 때문에 bash는 첫 번째 명령이 무리 인 서브 쉘을 먼저 시작합니다. flock은 파일 핸들 222에 대한 잠금을 얻으려고 시도합니다. Flock은 파일 설명자를 잠급니다. 파일 설명자를 잠그면 {}
의 코드가 실행됩니다. 실행 후, 파일 기술자 (222)의 내용이 잠금 파일에 기록되고 (즉, 아무것도), 파일이 닫히고 잠금이 해제된다. 이것은 파일을 닫으면 잠금을 해제하는 C와 같습니다. 물론 here에 대해 설명하는 유명한 @CharlesDuffy (모자 팁 @codeforester)보다 더 잘 설명 할 수는 없습니다.
출처
2016-12-22 05:01:00
2ps
좋지만 너무 특별합니다. 이미 존재하는 명령이있는 것 같습니다 : flock – dangonfast
@delavnog : 잠금을 위해 심볼릭 링크를 사용하여 구현을 보았습니다. 그러나 나는 무리가 낫다는 데 동의한다. – codeforester