2016-11-09 7 views
0

하나의 스크립트를 사용하여 다른 시간에 여러 프로세스를 시작하고 싶습니다. 그러나 나는 두 번째 프로세스를 시작하기 위해이 프로세스를 사용할 때 이미 실행 중이라는 사실에 대해 생각하지 않았습니다. 그래서 저는 이것을 성취하는데 도움이 될만한 것을 찾고 있습니다. 단일 시작 스크립트를 사용하여 여러 프로세스 시작 및 실행 유지

어떤 도움

아주 많이 감사하고 더 이상 정보가 필요한 경우 .... 알려

예를 주시기 바랍니다있다. 의 나는

./startup.sh ASDF start 

기본적으로 스크립트는이 개 매개 변수를 받아 바로 큐 매니저가 존재 확인하기 위해 확인합니다 (다시 나중에 실행)

./startup.sh QWER start 

하고 싶은 다음 case 문을 사용하는 것 시작/정지/... 아래 상태 등

스크립트를 확인

#!/bin/bash 

#### Define vars ######################### 
qm=$1 
QM=${qm^^} 
stat=$2 
proc=[I]ntroscopeAgent_$QM 
MQMONITOR_BINDIR=/opt/bin/MQMonitor_$QM 
#### Define New QUEUE MANAGERS ########### 
declare -a QMGR=('QWER' 'ASDF' 'ZXCV' 'ASDF'); 
########################################## 

if [[ " ${QMGR[@]} " =~ " $QM " ]]; then 
case "$stat" in 
    start) 
     C=`ps -eo pid,args | grep "MQMonitor" | grep -c $proc` 
     if [ ${C} -gt 0 ]; then 
      proc_dtl=`ps -eo pid,args | grep "MQMonitor" | grep $proc` 
      echo -e "\n\033[7mMQMonitor is running:\033[0m ${proc_dtl}\n\n\033[1mEither stop or restart the process\n\033[0m" 
      exit 1 
     fi 
     echo -e "\nStarting MQMonitor MQ 9 " 
     ${MQMONITOR_BINDIR}/startMQMonitor.sh & 
     if [ $? -eq 0 ]; then 
      echo -e "\033[0mMQMonitor Started.. (Please see start up log in \033[1m$logfile \033[0m) \n\033[0m" 
     else 
      echo -e "\033[01;31mMQMonitor ${MQMONITOR_BINDIR}/startMonitor.sh didn't start cleanly\n\033[0m" 
     fi 
     ;; 
    stop) 
     echo -e "\nStopping MQMonitor ..." 
     ${MQMONITOR_BINDIR}/stopMQMonitor.sh 
     if [ $? -eq 0 ]; then 
      echo -e "\033[01;31mMQMonitor stopped\n\033[0m" 
     else 
      echo -e "\033[01;31mCouldn't stop MQMonitor\n\033[0m" 
     fi 
     ;; 
    status) 
     C=`ps -eo pid,args | grep "MQMonitor" | grep -c $proc` 
     if [ ${C} -gt 0 ]; then 
      PROC_ID=`ps -eo pid,args | grep "MQMonitor" | grep $proc | awk '{print $1}'` 
      echo -e "\n\033[1m\033#6MQMonitor running PID: ${PROC_ID}\n\033[0m" 
     else 
      echo -e "\nMQMonitor not running\n" 
     fi 
     ;; 
    restart|reload) 
     C=`ps -eo pid,args | grep "MQMonitor" | grep -c $proc` 
     if [ ${C} -gt 0 ]; then 
      echo "MQMonitor Running..." 
      echo "Stopping MQMonitor" 
      ${MQMONITOR_BINDIR}/stopMQMonitor.sh 
      if [ $? -eq 0 ]; then 
      echo "MQMonitor stopped" 
      else 
      echo "Couldn't stop MQMonitor" 
      exit 1 
      fi 
      echo "Stopped" 
      echo "Starting MQMonitor" 
      ${MQMONITOR_BINDIR}/startMQMonitor.sh & 
      if [ $? -eq 0 ]; then 
      echo "MQMonitor Started" 
      else 
      echo "MQMonitor ${MQMONITOR_BINDIR}/startMonitor.sh didn't start cleanly" 
      fi 
     else 
      echo "MQMonitor not running" 
      echo "Starting MQMonitor" 
      ${MQMONITOR_BINDIR}/startMQMonitor.sh & 
      if [ $? -eq 0 ]; then 
      echo "MQMonitor Started" 
      else 
      echo "MQMonitor ${MQMONITOR_BINDIR}/startMonitor.sh didn't start cleanly" 
      fi 
     fi 
     ;; 
    *) 
     echo -e $"\n\n\e[41mSYNTAX ERROR:\033[0m\tPlease Use Proper Syntax: QMGR {start|stop|status|restart}\n\e[41mEx:\033[0m\t\t./mqagent QPX1 status\n\n" 
exit 1 
esac 
else 
echo -e "\n\n\e[41mPlease enter a valid Queue Manager\033[0m\n\n" 
fi 
+0

그래서 스크립트를 두 번 실행하면 처음 실행될 때 동일한 매개 변수가 전달 된 것처럼 보입니다. 이 문제를 해결하는 방법을 알아낼 수 없습니다. –

답변

0

supervisord 소리가 도움이 될 것 같습니다.

+0

답변 해 주셔서 감사합니다. 나는 질문을 잘못했다고 생각한다. 나는이 문제가 fg, bg, 소유권 등과 관련이 있다고 생각했다.하지만 다음 실행을 위해 PP를 설정 해제했다. –

0

위치 매개 변수를 설정 해제하면 다음 실행시 새 위치 매개 변수를 전달할 수있었습니다. PP를 지우기 위해 마지막으로 시프트 명령을 추가했습니다.