linux中一次启动多个jar的脚本

我们在通过jar启动项目时,有时候会比较多,启动会比较麻烦,需要编写shell脚本启动,vim start.sh (以下配置,只需要修改红色文字部分,其他地方不需要变动)

#! /bin/sh

端口号

PORTS=(9527 8004 8005 8001)

模块

MODULES=(process-gateway process-activiti process-auth process-system)

模块名称

MODULE_NAMES=(网关 流程配置中心 用户登录 数据管理)

jar包数组

JARS=(process-gateway-1.0.0-SNAPSHOT.jar process-activiti-0.0.1-SNAPSHOT.jar process-auth-1.0.0-SNAPSHOT.jar process-system-1.0.0-SNAPSHOT.jar)

jar包路径

JAR_PATH=‘/home/process_parent’

日志路径

LOG_PATH=‘/home/process_parent’
start() {
local MODULE=
local MODULE_NAME=
local JAR_NAME=
local command=" 1 " l o c a l c o m m a n d O k = 0 l o c a l c o u n t = 0 l o c a l o k C o u n t = 0 l o c a l p o r t = 0 f o r ( ( i = 0 ; i < 1" local commandOk=0 local count=0 local okCount=0 local port=0 for((i=0;i< 1"localcommandOk=0localcount=0localokCount=0localport=0for((i=0;i<{#MODULES[@]};i++))
do
MODULE=KaTeX parse error: Expected '}', got 'EOF' at end of input: {MODULES[i]}
MODULE_NAME=KaTeX parse error: Expected '}', got 'EOF' at end of input: {MODULE_NAMES[i]}
JAR_NAME=KaTeX parse error: Expected '}', got 'EOF' at end of input: {JARS[i]}
PORT=KaTeX parse error: Expected '}', got 'EOF' at end of input: {PORTS[i]}
if [ “ c o m m a n d " = = " a l l " ] ∣ ∣ [ " command" == "all" ] || [ " command"=="all"]∣∣["command” == “$MODULE” ];then
commandOk=1
count=0
PID=ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'
if [ -n “ P I D " ] ; t h e n e c h o " PID" ];then echo " PID"];thenecho"MODULE— M O D U L E N A M E : 已经运行 , P I D = MODULE_NAME:已经运行,PID= MODULENAME:已经运行,PID=PID”
else
exec nohup java -Xms256m -Xmx512m -jar J A R P A T H / JAR_PATH/ JARPATH/JAR_NAME >> L O G P A T H / LOG_PATH/ LOGPATH/MODULE.log 2>&1 &
PID=ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'
while [ -z " P I D " ] d o i f ( ( PID" ] do if (( PID"]doif((count == 30));then
echo “ M O D U L E − − − MODULE--- MODULEMODULE_NAME:$(expr KaTeX parse error: Undefined control sequence: \* at position 7: count \̲*̲ 10)秒内未启动,请检查!"…(( c o u n t + 1 ) ) e c h o " count+1)) echo " count+1))echo"MODULE_NAME启动中…”
sleep 10s
PID=ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'
done
okCount= ( ( (( ((okCount+1))
echo " M O D U L E − − − MODULE--- MODULEMODULE_NAME:已经启动成功,PID= P I D " f i f i d o n e i f ( ( PID" fi fi done if(( PID"fifidoneif((commandOk == 0));then
echo “第二个参数输入错误”
else
echo “…本次共启动:$okCount个服务…”
fi
}

stop() {
local MODULE=
local MODULE_NAME=
local JAR_NAME=
local command=“ 1 " l o c a l c o m m a n d O k = 0 l o c a l o k C o u n t = 0 f o r ( ( i = 0 ; i < 1" local commandOk=0 local okCount=0 for((i=0;i< 1"localcommandOk=0localokCount=0for((i=0;i<{#MODULES[@]};i++))
do
MODULE=KaTeX parse error: Expected '}', got 'EOF' at end of input: {MODULES[i]}
MODULE_NAME=KaTeX parse error: Expected '}', got 'EOF' at end of input: {MODULE_NAMES[i]}
JAR_NAME=KaTeX parse error: Expected '}', got 'EOF' at end of input: {JARS[i]}
if [ “ c o m m a n d " = " a l l " ] ∣ ∣ [ " command" = "all" ] || [ " command"="all"]∣∣["command” = “$MODULE” ];then
commandOk=1
PID=ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'
if [ -n “ P I D " ] ; t h e n e c h o " PID" ];then echo " PID"];thenecho"MODULE— M O D U L E N A M E : 准备结束 , P I D = MODULE_NAME:准备结束,PID= MODULENAME:准备结束,PID=PID”
kill -9 $PID
PID=ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'
while [ -n “$PID” ]
do
sleep 3s
PID=ps -ef |grep $(echo $JAR_NAME | awk -F/ '{print $NF}') | grep -v grep | awk '{print $2}'
done
echo “ M O D U L E − − − MODULE--- MODULEMODULE_NAME:成功结束”
okCount= ( ( (( ((okCount+1))
else
echo “ M O D U L E − − − MODULE--- MODULEMODULE_NAME:未运行”
fi
fi
done
if (( c o m m a n d O k = = 0 ) ) ; t h e n e c h o " 第二个参数输入错误 " e l s e e c h o " . . . . . . . . . . . . 本次共停止 : commandOk == 0));then echo "第二个参数输入错误" else echo "............本次共停止: commandOk==0));thenecho"第二个参数输入错误"elseecho"............本次共停止:okCount个服务…”
fi
}

case “$1” in
start)
start “$2”
;;
stop)
stop “$2”
;;
restart)
stop “$2”
sleep 3s
start “$2”
;;
*)
echo “第一个参数请输入:start|stop|restart”
exit 1
;;
esac

编写成功后,修改文件的权限chmod +7 start.sh
操作的命令:

启动所有

./start.sh start all

停止所有

./start.sh stop all

重启所有

./start.sh restart all

启动某一个 这里的gateway与sh中的module中定义的一样即可

./start.sh restart gateway

如果启动报:bad interpreter:No such file or directory的错误
原因:
1).sh脚本在windows系统下编写的,所以可能有不可见字符,从上图错误提示来看,很有可能脚本文件是DOS格式的,即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A。

解决办法:
1)通过vim filename 或者vi filename 进入编辑,即我这是vim startup_heartbeat.sh

2)然后通过shift+:进入命令模式。接着通过命令set ff 或者 set fileformat 查看文件格式,即我这如下图:从中可以看到我这文件格式是dos
3)修改文件格式dos为unix。通过命令set ff=unix 或 set fileformat=unix修改,然后再执行set ff 或者 set fileformat,查看是否修改成功。即如下图所示:
4)启动命令,发现正常启动,至此完毕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值