#!/bin/bash
|
#定义服务数组
|
serviceArr=(ycl)
|
#当前路径
|
rootPath=$(pwd)
|
#输入操作方式
|
read -p "请输入操作方式对应的序号:
|
1.start
|
2.stop
|
-> " action
|
echo ----------------------------------------------------------------------------------
|
#输入操作服务
|
read -p "请输入需要操作的服务对应的序号,请以空格分隔:
|
1.ycl
|
-> "
|
servers=$REPLY
|
echo ----------------------------------------------------------------------------------
|
#判断操作
|
if [ "$action" -eq 1 ];then
|
read -p "请输入启动环境参数(如不指定,默认为开发环境):
|
dev-开发环境
|
prod-生产环境
|
test-本地测试环境
|
onlinetest-线上测试环境
|
-> " env
|
echo ----------------------------------------------------------------------------------
|
if [ -n "$env" ];then
|
envConfig="--spring.profiles.active="${env}
|
fi
|
for i in $servers
|
do
|
if [ $i -gt 1 ];then
|
echo 输入的服务序号过大
|
elif [ $i -lt 1 ];then
|
echo 输入的服务序号过小
|
else
|
i=$(($i-1))
|
echo 正在启动服务 ${serviceArr[$i]}
|
cd $rootPath/${serviceArr[$i]}
|
# java启动参数 $startConfig
|
#-Xms128m 最小堆
|
#-Xmx256m 最大堆 此值可以设置与-Xms相同,以避免每次垃圾回收完成后JVM重新分配内存
|
#-Xmn2g 年轻代
|
#-Xss128k 线程堆大小a
|
#BackManager配置
|
if [[ $serviceArr[$i] =~ "ycl" ]];then
|
startConfig="-Xms400m -Xmx400m"
|
else
|
startConfig="-Xms400m -Xmx400m"
|
fi
|
echo 在路径 $(pwd) 下
|
echo 执行 nohup java $startConfig -jar *.jar $envconfig "&"
|
nohup java $startConfig -jar *.jar $envConfig &
|
pid=$(ps -ef|grep -i ${serviceArr[$i]}|grep .jar|grep -v grep|awk '{print $2}')
|
if [ -n "$pid" ];then
|
echo 启动服务 ${serviceArr[$i]} 成功,进程ID为: $pid
|
else
|
echo 启动服务 ${serviceArr[$i]} 失败,执行的命令为:
|
echo nohup java $startConfig -jar *.jar $envconfig &
|
fi
|
echo ----------------------------------------------------------------------------------
|
fi
|
done
|
elif [ "$action" -eq 2 ];then
|
for i in $servers
|
do
|
if [ $i -gt 1 ];then
|
echo 输入的服务序号过大
|
elif [ $i -lt 1 ];then
|
echo 输入的服务序号过小
|
else
|
i=$(($i-1))
|
pid=$(ps -ef|grep -i ${serviceArr[$i]}|grep .jar|grep -v grep|awk '{print $2}')
|
serverName=$(ps -ef|grep -i ${serviceArr[$i]}|grep .jar|grep -v grep|awk '{print $12}')
|
if [ -n "$pid" ];then
|
echo 关闭服务 ${serviceArr[$i]} 的进程ID为: $pid
|
echo 关闭服务 ${serviceArr[$i]} 的jar包名为: $serverName
|
kill -9 $pid
|
result=$(ps -ef|grep $pid|grep -v grep)
|
if [ -n "$result" ];then
|
echo 关闭服务成功!
|
else
|
echo 关闭服务失败! 查询到的进程为:
|
echo $result
|
echo 请重新尝试!
|
fi
|
else
|
echo 未启动服务 ${serviceArr[$i]}
|
fi
|
echo ----------------------------------------------------------------------------------
|
fi
|
done
|
else
|
echo 输入的操作方式有误,请重新执行脚本!
|
fi
|