Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 한컴오피스
- 웹
- 우분투
- 진단항목
- 윈도우 8
- D330-10igm
- 단열
- 피들러
- HTML5
- WEB
- D330
- Web Programming
- 고전게임
- retropie
- fiddler
- 이보드
- 고전게임기 만들기
- 안드로이드
- 보안
- 네트워크
- Lenovo D330-10igm
- 인테리어
- 자바스크립트
- network
- 문자열
- 인증 및 세션관리
- ubuntu
- ASP.NET
- 셀프인테리어
- c#
Archives
- Today
- Total
Kinesis´s Open Document
[Bash/Shell] 중복 실행 방지 체크 본문
개념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"
'MEMO/기술 자료 > Bash/Shell' 카테고리의 다른 글
[Bash/Shell] 파일 존재여부를 확인하는 함수 (2) | 2024.02.01 |
---|---|
[Bash/Shell] 스크립트 길이에 따른 관리 Tip (0) | 2024.02.01 |
[Bash/Shell] root 권한 실행 여부 체크 (0) | 2024.02.01 |