DB 데이터를 삭제하는 어플리케이션을 실행중
데이터가 많아서 1분 정도에 끝날 수 있는 Java어플리케이션을 명령을 작성하고 crontab 을 통해 1분에 한번씩 실행되도록 하는데... 혹시 어플리케이션이 1분 안에 끝나지 않으면 다음프로세스가 실행되면서 예측하지 못하는 결과가 나올 수도 있다.
스프링 스케쥴러를 쓴다면 fixedDelay 같은 옵션으로 종료되어야 실행 하도록 강제 할 수 있는데 crontab는 그렇지가 않다.
해결책으로 /usr/bin/flock 명령을 통해 프로세스 실행시 특정 파일에 락을 걸고 다음 실행시 그 파일의 락이 풀렸는지 여부에 따라 실행여부 판단을 하는 방법이 있다.
예제
* * * * * /usr/bin/flock -n /tmp/원하는명.lockfile /usr/local/command/app.sh
템프러리 폴더에 특정 파일을 만들고 flock 명령이 해당 파일의 잠금 상태를 확인해서 실행하는 개념
감사합니다.
'UNIX-Networking' 카테고리의 다른 글
Ubuntu GUI 환경 '원격 데스트톱연결'로 접속하기 (0) | 2022.11.29 |
---|---|
Linux crone tab 으로 MySQL 일단위 정기 백업 (최근 1주일치만 유지 하기) (0) | 2019.12.23 |
CentOS 7 에 Tomcat 7 자동 재시작 하도록 서비스 등록 (0) | 2018.11.15 |
[CentOS 7 minimal 설치 #4] 방화벽(firewalld) 설정 하기 (0) | 2018.02.17 |
[CentOS 7 minimal 설치 #3] MySQL 5.7 설치 (3) | 2018.02.15 |