SW 개발

[shell] shell script 중복실행 방지하기 예제

. . . 2020. 3. 17. 13:52
반응형

사용 시나리오

다음과 같은 사용케이스에서 중복실행의 이슈가 생겼다.

  1. 만약 직접 짠 쉘 스크립트를 cron 에 등록하여 동작시킨다.
  2. 해당 스크립트에서 파일카피등의 동작으로 인해 동작시간이 길어지는경우가 발생한다.
  3. 기존 실행한 스크립트가 끝나지 않은상황에서 새로운 스크립트 실행된다.
  4. 중복실행으로인해 파일이 엉망으로됨

주기적으로 파일을 백업하다보니 위와같은 상황이 발생하여 스크립트를 작성한다.

쉘스크립트에서 중복실행방지 방법

다음과 같이 동작하게 한다.

  1. 간단하게 임시파일을 만들고, 해당 파일이 없을때만 스크립트를 동작시킨다.
  2. 쉘 스크립트가 끝나면, 임시파일을 지운다.
  3. 재부팅시 자동으로 임시파일을 지우기위해서 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

끗.

반응형