使用单个启动脚本启动多个进程并保持运行
问题描述:
我想使用单个脚本在不同的时间启动多个进程。然而,我没有想到,当我尝试使用它开始第二个过程时它已经在运行。所以我正在寻找能够帮助我实现这一目标的东西。使用单个启动脚本启动多个进程并保持运行
任何帮助是非常赞赏,并且如果需要任何更多的信息,请让我知道....
前。什么,我想(与后来的运行它再次)做
./startup.sh QWER start
./startup.sh ASDF 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
答
通过取消位置参数的设置,我可以在下次运行时通过新的位置参数。在最后添加一个移位命令以清除PP。
因此,当我第二次运行该脚本时,它似乎在第一次运行时使用传递给它的相同参数。我不知道如何解决这个问题。 –