관리 메뉴


Kinesis´s Open Document

[Bash/Shell] 중복 실행 방지 체크 본문

MEMO/기술 자료/Bash/Shell

[Bash/Shell] 중복 실행 방지 체크

Kinesis 2024. 2. 1. 11:27

개념1. "echo $$" 명령어를 사용하면 현재 PID 를 출력할 수 있다.

개념2. "echo $0" 명령어를 사용하면 현재 실행중인 스크립트의 파일명을 출력할 수 있다.

개념3. 현재 파일이 동작되는 pid 를 임시 파일($0.pid)로 생성하여 실행 여부를 판단할 수 있게 한다.

개념4. pid 값을 갖은 임시 파일이 존재하면 메시지를 출력하고 스크립트를 종료한다.

개념5. pid 값을 갖은 임시 파일이 없다면, 임시 파일($0.pid)를 생성하고 다음 처리를 이어간다.

 

아래는 증명코드.

#!/bin/bash
###############################################################################################
# 중복실행 방지 체크
if [[ -f $0.pid ]]; then
  exist_pid=`cat $0.pid`
  if [[ -z `ps -e|grep "^$exist_pid "` ]];then
    rm -f $0.pid
  else
    echo -e "\e[0;33mThis script is already running...\r\n";
    echo -e "이 스크립트는 이미 실행중입니다.\e[0m";
    exit 130;
  fi
else 
  echo $$ > $0.pid;
fi

 

$$ 와 $0 을 테스트 하기 위한 코드는 아래와 같으며, 해당 내용을 담은 파일을 생성, 실행 권한을 부여한 뒤 테스트하면 된다.

#!/bin/bash
echo "PID : $$"
echo "This script name : $0"


Comments