클러스터 잠금 파일만 보면 프로세스에서 명령이 실행되고 있는지 알 수 있나요?

클러스터 잠금 파일만 보면 프로세스에서 명령이 실행되고 있는지 알 수 있나요?

유틸리티 리눅스flockflock()Linux C API를 기반으로 구현되었나요?

잠금 파일만 보면 프로세스에서 명령이 실행되고 있는지 알 수 있나요? 데몬화된 명령 flock실행이 완료되면 잠금 파일이 변경되지 않는 것 같습니다. 실행 중과 완료 후의 모습은 다음과 같습니다.

$ ls -l ../sleep.flock.file 
-rw-rw-r-- 1 t t 0 Oct 30 14:01 ../sleep.flock.file
$ ls -l ../sleep.flock.file 
-rw-rw-r-- 1 t t 0 Oct 30 14:01 ../sleep.flock.file

감사해요.

답변1

예. 에 명확하게 명시되어 있음man 1 flockflock명령은 flock()man 2 flock주석 섹션에는 이것이 flock()Linux 커널 2.0부터 시작하는 시스템 호출을 통해 구현된다고 나와 있습니다.

답변2

$ flock -xn /home/vagrant/forever.lck -c /var/tmp/forever.sh

위의 클러스터 명령은 /home/vagrant/forever.lck 파일을 엽니다.배타적(-x) 파일 잠금그리고 지정된 명령(-c)을 실행합니다. [forever.sh는 sleep 25d 명령을 사용하여 완료하는 데 25일이 걸립니다.]

두 번째 인스턴스를 실행하면 Flock은 독점 파일 잠금이 이미 존재한다는 것을 인식합니다.

$ flock -xn /home/vagrant/forever.lck -c /var/tmp/forever.sh 
$ echo $?
1

Flock이 파일을 잠글 수 없고 -n(비차단) 플래그로 실행되면 Flock 명령은 오류가 발생했음을 나타내는 종료 코드와 함께 자동으로 종료됩니다.

Flock의 유용한 점은 원래 프로세스가 완료될 때까지 파일 잠금이 그대로 유지되며, 이 시점에서 Flock이 파일 잠금을 해제한다는 것입니다. 이는 프로세스가 성공적으로 완료되거나 실패하든 마찬가지입니다.

자물쇠는 여기서 중요한 것이며 눈에 보이지 않습니다 ls.

이 기사에서 발췌

관련 정보