Linux Bash-对多个类似的服务使用1个停止脚本,并仅终止正确的进程
我在一台机器上有多个进程作为服务运行 在从一个进程/服务转移到多个进程/服务之前,我使用以下脚本停止我的服务Linux Bash-对多个类似的服务使用1个停止脚本,并仅终止正确的进程,linux,bash,service,Linux,Bash,Service,我在一台机器上有多个进程作为服务运行 在从一个进程/服务转移到多个进程/服务之前,我使用以下脚本停止我的服务 #!/bin/sh SIGNAL=${SIGNAL:-TERM} PIDS=$(ps ax | grep -i 'datastream' | grep java | grep -v grep | awk '{print $1}') if [ -z "$PIDS" ]; then echo "No Brooklin server to stop"
#!/bin/sh
SIGNAL=${SIGNAL:-TERM}
PIDS=$(ps ax | grep -i 'datastream' | grep java | grep -v grep | awk '{print $1}')
if [ -z "$PIDS" ]; then
echo "No Brooklin server to stop"
exit 1
else
kill -s $SIGNAL $PIDS
fi
现在的问题是,如果将此脚本作为服务停止命令调用,则会终止此类型的所有进程
我的服务被调用,例如service-A、service-B、service-C。如果我发送service service-C stop
命令,当前脚本将停止所有3个进程
我想让脚本使用提供的服务名称来确定要停止哪个进程(我可以将A/B/C从进程输出grep到ps,但我没有告诉它如何仅停止service stop
命令中给出的进程
有人有处理类似问题的经验吗?在启动应用程序时,您可以尝试以下方法,将您的
PID
存储在静态文件中,然后您可以使用相同的文件终止进程
粘贴在我的一个开始-停止脚本下面,我过去曾使用该脚本搅动多个进程
开始脚本:-
#!/bin/bash
export PORT=$1
. /application/setEnv.sh
/java/jdk1.8.0_152/bin/java -Xms512m -Xmx2G -XX:+DisableExplicitGC -jar /application/api-1.0-0-all.jar </dev/null >>$LOGDIR/service$PORT.log 2>&1 &
echo $! > /application/service$PORT.pid
disown $!
#!/bin/bash
PORT=$1
PID=`cat /application/service$PORT.pid`
if [ ! -z "$PID" ]; then
rm /application/service$PORT.pid
kill -9 $PID >/dev/null 2>&1
if [ $? -gt 0 ]; then
echo "PID file found but no matching process was found. Stop aborted."
exit 1
fi
else
echo "PID file is empty and has been ignored."
fi
mv /application/logs/service$PORT.log /application/logs/service$PORT.log`date +%d%m%Y%H%M%S`
我能想到的唯一变化是将我的端口使用逻辑(即,$port
)替换为您的服务名称(即A/B/C)。试试看