crontab 중복실행 방지 스크립트

2018. 10. 9. 12:52·시스템/시스템운영

crontab 중복실행 방지 스크립트


시스템환경

CENTOS 7.5

locale ko_KR.UTF-8


시스템을 운영하다보면 crontab에 짧은 간격(5분내) 으로 스크립트를 등록해서 사용할때가 있습니다.


그런데 서버 부하나 정기백업등으로 인해 먼저 실행된 cron 스크립트가 끝나지않고 중복 실행이되어 문제가 발생하는 경우가 가끔 있습니다.


이를 방지하는 bash 스크립트 내용 입니다.


#!/bin/bash


# 변수 초기화

DATE=`date +%Y%m%d`

START_DATE_TIME=`date +%Y-%m-%d-%H:%M:%S`

LOG_DIR='/root/test'



if [ -s "$0.pid" ]

then

  # pid 파일이 생성되어 있으면 fail.log에 로그를 남기고 실행 중지

        echo "$START_DATE_TIME Already $0 is running" >> $LOG_DIR/fail.log

        exit

else

  # pid 파일 생성

        echo $$ > "$0.pid"

        # 실제 실행되는 스크립트 작성

        echo "$START_DATE_TIME CRON START" >> ${LOG_DIR}${LOG_FILE}_${DATE}.log

        # 실행이 중지되면 다음 파일 실행을 위해 pid 파일 삭제

        rm -f "$0.pid"

        END_DATE_TIME=`date +%Y-%m-%d-%H:%M:%S`

        echo "$END_DATE_TIME CRON END" >> ${LOG_DIR}${LOG_FILE}_${DATE}.log

        echo " " >> ${LOG_DIR}${LOG_FILE}_${DATE}.log

fi


참고로 pid 파일은 스크립트 경로내에 파일명.pid로 생성됩니다.

저작자표시 비영리 (새창열림)

'시스템 > 시스템운영' 카테고리의 다른 글

만료일 알람 스크립트  (0) 2018.12.14
sendmail 운영 시 메일서버가 계속 차단되는 문제해결  (0) 2018.10.12
'시스템/시스템운영' 카테고리의 다른 글
  • 만료일 알람 스크립트
  • sendmail 운영 시 메일서버가 계속 차단되는 문제해결
bash1004
bash1004
  • bash1004
    bash
    bash1004
  • 전체
    오늘
    어제
    • 분류 전체보기 (10)
      • 시스템 (8)
        • CENTOS6 (1)
        • CENTOS7 (1)
        • 젠서버 (1)
        • 시스템운영 (3)
        • DB (2)
      • 고전게임 (0)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    xencenter
    vnc
    XenServer
    젠서버
    그래픽
    CentOS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
bash1004
crontab 중복실행 방지 스크립트
상단으로

티스토리툴바