#!/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