반응형
사용 시나리오
다음과 같은 사용케이스에서 중복실행의 이슈가 생겼다.
- 만약 직접 짠 쉘 스크립트를 cron 에 등록하여 동작시킨다.
- 해당 스크립트에서 파일카피등의 동작으로 인해 동작시간이 길어지는경우가 발생한다.
- 기존 실행한 스크립트가 끝나지 않은상황에서 새로운 스크립트 실행된다.
- 중복실행으로인해 파일이 엉망으로됨
주기적으로 파일을 백업하다보니 위와같은 상황이 발생하여 스크립트를 작성한다.
쉘스크립트에서 중복실행방지 방법
다음과 같이 동작하게 한다.
- 간단하게 임시파일을 만들고, 해당 파일이 없을때만 스크립트를 동작시킨다.
- 쉘 스크립트가 끝나면, 임시파일을 지운다.
- 재부팅시 자동으로 임시파일을 지우기위해서
temp
폴더에 해당 파일을 만들어서 관리한다.
위와같이 스크립트를 동작하게 하기위해서 다음의 스크립트를 작성.
#!/bin/bash
LOCKFILE_PATH=/tmp/lock.script.file
# Exit if /tmp/lock.file exists
if [ -f $LOCKFILE_PATH ]
then
echo "already running..."
exit
fi
####################################################
# Todo somthing...
echo "hello world!!!"
####################################################
# Remove lock file
rm $LOCKFILE_PATH
끗.
반응형