본문 바로가기
업무 기록/ETC

리눅스 .sh(start.sh, stop.sh

by code2772 2023. 6. 25.

[ 목차 ]

    728x90
    반응형

    grep

    grep이 파일의 문자열을 검색할 때, 단순 문자열 매칭이 아니라, 정규 표현식(Regular Expression)에 의한 패턴 매칭(Pattern Matching) 방식을 사용

    ✔ start.sh

    proc=`ps -ef | grep AAAAAAA-0.0.1-SNAPSHOT.jar | grep $LOGNAME | grep -v vi | grep -v grep | grep -v sh`
    
    if [X"$proc" != X"" ]; then
    	echo "[$proc] aleadt executed.."
    else
    	javaja -server -Dspring.profiles.active=dev -jar Terashot-0.0.1-Center.jar &
    fi
    
    // bash stat.sh 로 시작하기
    1. proc=ps -ef | grep AAAAAAA-0.0.1-SNAPSHOT.jar | grep $LOGNAME | grep -v vi | grep -v grep | grep -v sh``
      • ps -ef 명령어를 사용하여 현재 실행 중인 모든 프로세스를 조회합니다.
      • grep AAAAA-0.0.1-SNAPSHOT.jar를 통해 AAAAA-0.0.1-SNAPSHOT.jar이 포함된 프로세스만 필터링합니다.
      • grep $LOGNAME을 통해 현재 사용자(LOGNAME)와 일치하는 프로세스만 필터링ㄴㅅ합니다.
      • grep -v vi를 통해 "vi"를 제외한 프로세스만 필터링합니다.
      • grep -v grep를 통해 "grep" 명령어 자체를 제외한 프로세스만 필터링합니다.
      • grep -v sh를 통해 "sh" 명령어 자체를 제외한 프로세스만 필터링합니다.
      • 최종적으로 조회된 프로세스 목록을 proc 변수에 할당합니다.
    2. if [X"$proc" != X"" ]; then
      • "$proc" 변수의 값이 비어있지 않은 경우를 확인합니다.
    3. echo "[$proc] aleadt executed.."
      • 이미 실행 중인 프로세스가 존재하는 경우, 해당 프로세스 목록을 출력합니다.
    4. else
      • 이미 실행 중인 프로세스가 없는 경우, 아래의 명령어를 실행합니다.
    5. java -server -Dspring.profiles.active=dev -jar Terashot-0.0.1-Center.jar &
      • java 명령어를 사용하여 Terashot-0.0.1-Center.jar 파일을 실행합니다.
      • -server는 서버 모드로 JVM을 실행하는 옵션입니다.
      • -Dspring.profiles.active=dev는 "dev" 프로파일을 사용하여 Spring 애플리케이션을 실행하는 옵션입니다.
      • -jar Terashot-0.0.1-Center.jar는 Terashot-0.0.1-Center.jar 파일을 실행하는 옵션입니다.
      • &는 프로세스를 백그라운드에서 실행하도록 설정합니다.

    ✔ stop.sh

    ps -ef | grep AAAAAAA-0.0.1-SNAPSHOT.jar | grep $LOGNAME | grep -v vi | grep -v grep | grep -v sh | \
    grep -v tail | grep -v vi | awk ' { print $2 }' | \
    while read PID
    do 
    	echo kill -9 &PID
    	kill -9 &PID
    done
    
    exit
    1. ps -ef | grep AAAAAAA-0.0.1-SNAPSHOT.jar | grep $LOGNAME | grep -v vi | grep -v grep | grep -v sh | \ grep -v tail | grep -v vi | awk ' { print $2 }'
      • ps -ef 명령어를 사용하여 현재 실행 중인 모든 프로세스를 조회합니다.
      • grep AAAAAAA-0.0.1-SNAPSHOT.jar를 통해 AAAAAAA-0.0.1-SNAPSHOT.jar이 포함된 프로세스만 필터링
      • grep $LOGNAME을 통해 현재 사용자(LOGNAME)와 일치하는 프로세스만 필터링합니다.
      • grep -v vi를 통해 "vi"를 제외한 프로세스만 필터링합니다.
      • grep -v grep를 통해 "grep" 명령어 자체를 제외한 프로세스만 필터링합니다.
      • grep -v sh를 통해 "sh" 명령어 자체를 제외한 프로세스만 필터링합니다.
      • grep -v tail를 통해 "tail" 명령어 자체를 제외한 프로세스만 필터링합니다.
      • grep -v vi를 통해 "vi"를 제외한 프로세스만 필터링합니다.
      • awk ' { print $2 }'를 통해 프로세스 목록에서 두 번째 열인 PID 값만 추출합니다.
    2. while read PID
      • PID 변수를 선언하고, 앞서 추출한 PID 값을 순차적으로 할당합니다.
    3. do
      • 반복문의 시작을 나타냅니다.
    4. echo kill -9 $PID
      • 종료할 프로세스의 PID를 출력합니다. (실제로 종료하지는 않습니다.)
    5. kill -9 $PID
      • -9 옵션을 사용하여 해당 PID에 해당하는 프로세스를 강제로 종료합니다.
    6. done
      • 반복문의 종료를 나타냅니다.
    7. exit
      • 스크립트의 실행을 종료합니다.

     

    반응형