[Linux] flock 스크립트 잠금 기능 - crontab 중복실행 방지
- 리눅스
- 2021. 7. 15.
리눅스에서 명령어 또는 crontab 에서 쉘 스크립트를 실행시킬 때 쉘 프로세스가 실행되어 있는 상태에서 똑같은 스크립트가 실행되게 되면 성능적으로 또는 프로세스에 문제가 발생하는 경우가 있습니다. 그럴 경우를 대비해 미리 예방할 수 있는 방법에 대해서 알려드리겠습니다.
linux 에서 flock를 통해 동시에 두개 이상의 스크립트 파일이 실행을 하지 않도록 파일에 Lock 설정을 할 수 있다.
flock은 file lock 을 줄여놓은 명령어입니다.
명령어(Usage)
* * * * * flock [Option] ./{Script}
Options
-s --shared Get a shared lock
-x --exclusive Get an exclusive lock
-u --unlock Remove a lock
-n --nonblock Fail rather than wait ( 대기가 아닌 실패 )
-w --timeout Wait for a limited amount of time ( 일정 시간 대기 )
-o --close Close file descriptor before running command
-c --command Run a single command string through the shell
-h --help Display this text
-V --version Display version
옵션 설명
옵션 [ -s ]
flock 으로 동작 중인 스크립트가 존재하면 해당 Lock 파일과 공유
flock -s [1번 Script] 으로 실행하고 있는 스크립트에
flock -s [2번 Script] 를 실행하면 동작 한다.
이럴 경우 1번 Script, 2번 Script 가 모두 종료되어야 flock가 해제됩니다.
옵션 [ -x ]
flock -x [1번 Script] 로 실행을 하면,
flock -s [2번 Script] 대기상태로 ( 이전 1번 Script 가 종료되기 전까지 대기 상태가 된다.)
옵션 [ -u ]
flock -x [1번 Script] 로 실행을 하면, 2번 스크립트는 1번 스크립트가 종료되기 전까지 대기상태가 된다.
해당 1번 스크립트 상태를 무효화 시킬 수 있다, flock -u /tmp/test.lock {2번 Script} 를 하면 된다.
옵션 [ -n ]
flock 으로 동작 중인 스크립트가 존재하면 또 다른 flock 으로 스크립트를 실행할 때 실패로 종료된다.
flock -n [1번 Script] ==> 동작
flock -n [2번 Script] ==> 실패
옵션 [ -w ]
flock 으로 동작 중인 스크립트가 존재하면 또 다른 flock 으로 스크립트를 실행할 때 일정 시간 대기 상태를 가지고 대기시간이 지나면 종료 대기시간 동안 이전 작업이 완료가 되면 바로 실행 하도록 한다.
flock -w 10 [Script] 을 하면 대기 상태가 된다.
'리눅스' 카테고리의 다른 글
리눅스 '>' '>>' 파일에 텍스트 추가 방법 (0) | 2022.07.12 |
---|---|
리눅스 특정 필드 값 추출하기 awk (0) | 2022.06.19 |
리눅스 부팅 시 자동 실행 시작프로그램 등록 (0) | 2022.06.11 |
리눅스 yum 안될 때 미러사이트 변경 방법 (0) | 2022.05.14 |
리눅스 사용자와 그룹 관리하는 방법 - useradd, groupadd 명령어 사용 방법 (0) | 2021.07.18 |