-
프로세스가 실행 중인지 체크 후 실행하기bash 2021. 10. 14. 11:15
문제
프로세스가 이미 실행 중이면 실행하지 않고, 실행중이지 않으면 실행하는 스크립트를 작성한다.
(스크립트를 반복 실행 하더라도 프로세스가 중복 실행되지 않도록 한다.)
프로세스가 실행될 때 PID 를 파일로 기록하고, kill -0 PID 로 체크 하도록 한다.
코드
#!/bin/bash ulimit -c unlimited BIN_DIR=`dirname "$0"` BASE_DIR=`cd "$BIN_DIR"; cd ..; pwd` LOG_DIR=$BASE_DIR/logs PID_FILE=$BASE_DIR/application.pid # PID_FILE 이 존재하고, 해당 PID 로 running 중이면 application 을 실행하지 않고 exit 한다. if [ -f $PID_FILE ]; then if kill -0 `cat $PID_FILE` > /dev/null 2>&1; then echo `date`, "application is already running as process `cat $PID_FILE`." exit 1 fi fi nohup $JAVA_HOME/bin/java -Dlog.dir=$LOG_DIR com.github.windbird123.MyApplication >& $LOG_DIR/application.log & echo $! > $PID_FILE
'bash' 카테고리의 다른 글
디렉토리 목록을 정렬 후 상위 N 개의 디렉토리만 남기고 모두 삭제하기 (0) 2022.01.21 실행되는 스크립트로 부터 프로젝트 홈의 절대 경로 알아내기 (0) 2021.10.13 명령 실행 후 성공이면 진행하고 실패면 exit 하기 (0) 2021.08.04