如一台服务器上部署两个相同的服务就不行了,因为是按项目名称杀的进程
#!/bin/sh
base_home=/usr/local/app/test
jar_name=demo-proj-0.0.1-SNAPSHOT
errorlogs_dir=$base_home/logs
gclog_file=$base_home/logs/gc.log
dump_dir=$base_home/logs/heapdump
#运行脚本提示信息
tips(){
echo "-------------------------------------"
echo ""
echo "项目地址: $base_home/$jar_name.jar"
echo ""
echo "你可以使用如下参数进行操作"
echo "-status -查看当前项目运行状态"
echo "-start -启动当前项目"
echo "-stop -停止当前项目"
echo "-restart -重启当前项目"
echo ""
echo "-------------------------------------"
}
#查看状态
status(){
#查询端口的PID {print $7}-取出打印的第七个值
pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $7}'`
#判断端口是否被占用
if test -z "$pid" ;then
echo "没有项目在运行"
else
echo "项目正在运行中"
fi
}
#启动项目
start(){
pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $7}'`
if test -z "$pid" ;then
echo "正在启动......"
java -Xmx100m -Xms100m -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:GCLogFileSize=128M -XX:NumberOfGCLogFiles=1 -Xloggc:$gclog_file -XX:HeapDumpPath=$dump_dir -jar $base_home/${jar_name}.jar --spring.config.location=$base_home/config/application.yml >> $base_home/logs/${jar_name}_$(date +'%Y%m%d').log &
echo "启动完成....."
else
echo "项目运行中或端口已被占用"
fi
}
#停止项目
stop(){
pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $7}'`
if test -z "$pid" ;then
echo "没有项目在运行,请先启动"
else
kill -9 $pid
echo "已杀死应用$jar_name"
fi
}
#重启项目
restart(){
pid=`ps -ef|grep $jar_name|grep -v grep|awk '{print $7}'`
echo "正在杀死pid $pid 中..."
if test -z "$pid" ;then
echo "项目未启动"
else
kill -9 $pid
fi
sleep 5 #睡眠五秒
start #调用启动方法
echo "项目重启成功!"
}
#参数选项
case "$1" in
"-status")
status
;;
"-start")
start
;;
"-stop")
stop
;;
"-restart")
restart
;;
*)
tips
;;
esac
执行
# ./all.sh -start
如果有BUG
:
-bash: ./all.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录
请查看
/bin/bash^M: 坏的解释器: 没有那个文件或目录_qq690452074的专栏-CSDN博客