编写如下脚本,定义jar包路径及集合,循环开启脚本并逐一指定端口
关闭时亦循环遍历jar集合,根据jar包文件名获得对应的pid并kill -9关闭进程
#!/bin/sh
# jar包数组
JARS=(op1.jar op2.jar op3.jar op4.jar)
# jar包路径
JAR_PATH='/opt/op'
start() {
local JAR_NAME=
local PORT=
for((i=0;i<${#JARS[@]};i++));
do
JAR_NAME=${JARS[$i]}
PORT=$((8080+$i))
exec nohup java -jar $JAR_PATH/$JAR_NAME --server.port=$PORT &
echo "$JAR_NAME已启动,运行在端口$PORT"
done
}
stop() {
local JAR_NAME=
for((i=0;i<${#JARS[@]};i++));
do
JAR_NAME=${JARS[$i]}
ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}' | xargs kill -9
echo "运行在端口$PORT的$JAR_NAME已停止"
done
}
case "$1" in
start)
start
;;
stop)
stop
;;
esac