
CentOS의 Tomcat 인스턴스에 업데이트된 코드 배포를 처리하는 bash 배포 스크립트가 있지만 Chef와 RunDeck 모두 이 스크립트를 호출할 수 있으며 Chef가 주기적으로 실행되므로 충돌이 발생할 수 있습니다.
배포 스크립트가 동시에 두 번 실행되는 것을 방지하는 방법은 무엇입니까?
표준적인 대답은 배포 논리를 flock
.
그러나 배포가 작동하지 않는 Tomcat을 다시 시작했기 때문에 새 Java 프로세스가 잠금을 상속하고 추가 배포 스크립트 실행을 방지했습니다.
동시 실행을 방지하거나 상속을 방지하는 다른 방법이 있습니까 flock
?
답변1
flock
잠금을 해제하려는 프로그램을 실행하기 전에 잠겨 있는 파일 설명자를 닫을 수 있습니다.
(
flock -n 9 || exit 120
…
(exec 9>&-; tomcat &)
) 9>/var/run/my.lock