linux java 多个jar包_Linux shell脚本,按顺序批量启动多个jar包,批量启动spring cloud的jar包...

Linux shell脚本,按顺序批量启动多个jar包,批量启动spring cloud的jar包

一. 手动一个一个启动的方式:

nohup java -jar eurekaserver.jar > ../logs/eurekaserver.log 2>&1 &nohup java-jar configserver.jar > ../logs/configserver.log 2>&1 &nohup java-jar zuulgatewayserver.jar > ../logs/zuulgatewayserver.log 2>&1 &nohup java-jar authorizeserver.jar > ../logs/authorizeserver.log 2>&1 &nohup java-jar logstatisticsserver.jar > ../logs/logstatisticsserver.log 2>&1 &nohup java-jar appmgrserver.jar > ../logs/appmgrserver.log 2>&1 &nohup java-jar organizeuserserver.jar > ../logs/organizeuserserver.log 2>&1 &nohup java-jar jtmopserver.jar > ../logs/jtmopserver.log 2>&1 &

二. shell脚本代码:

#!/bin/sh

export EUREKA=eurekaserver.jar

export CONFIG=configserver.jar

export GATEWAY=zuulgatewayserver.jar

export AUTH=authorizeserver.jar

export LOG=logstatisticsserver.jar

export APPMGR=appmgrserver.jar

export ORGANIZEUSER=organizeuserserver.jar

export JTMOP=jtmopserver.jar

export EUREKA_log=../logs/eurekaserver.log

export CONFIG_log=../logs/configserver.log

export GATEWAY_log=../logs/zuulgatewayserver.log

export AUTH_log=../logs/authorizeserver.log

export LOG_log=../logs/logstatisticsserver.log

export APPMGR_log=../logs/appmgrserver.log

export ORGANIZEUSER_log=../logs/organizeuserserver.log

export JTMOP_log=../logs/jtmopserver.log

export EUREKA_port=10080export CONFIG_port=10085export GATEWAY_port=10084export AUTH_port=10088export LOG_port=10093export APPMGR_port=10092export ORGANIZEUSER_port=10087export JTMOP_port=10091

case "$1" instart)

## 启动eureka

echo"--------eureka 开始启动--------------"nohup java-jar $EUREKA > $EUREKA_log 2>&1 &EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`

until [-n "$EUREKA_pid"]doEUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`

done

echo"EUREKA pid is $EUREKA_pid"sleep10echo"--------eureka 启动成功--------------"## 启动config

echo"--------开始启动CONFIG---------------"nohup java-jar $CONFIG > $CONFIG_log 2>&1 &CONFIG_pid=`lsof -i:$CONFIG_port|grep "LISTEN"|awk '{print $2}'`

until [-n "$CONFIG_pid"]doCONFIG_pid=`lsof -i:$CONFIG_port|grep "LISTEN"|awk '{print $2}'`

done

echo"CONFIG pid is $CONFIG_pid"sleep30echo"---------CONFIG 启动成功-----------"## 启动gateway

echo"--------开始启动GATEWAY---------------"nohup java-jar $GATEWAY > $GATEWAY_log 2>&1 &GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`

until [-n "$GATEWAY_pid"]doGATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`

done

echo"GATEWAY pid is $GATEWAY_pid"echo"---------GATEWAY 启动成功-----------"## 启动auth

echo"--------开始启动AUTH---------------"nohup java-jar $AUTH > $AUTH_log 2>&1 &AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`

until [-n "$AUTH_pid"]doAUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`

done

echo"AUTH pid is $AUTH_pid"echo"---------AUTH 启动成功-----------"## 启动log

echo"--------开始启动LOG---------------"nohup java-jar $LOG > $LOG_log 2>&1 &LOG_pid=`lsof -i:$LOG_port|grep "LISTEN"|awk '{print $2}'`

until [-n "$LOG_pid"]doLOG_pid=`lsof -i:$LOG_port|grep "LISTEN"|awk '{print $2}'`

done

echo"LOG pid is $LOG_pid"echo"---------LOG 启动成功-----------"## 启动appmgr

echo"--------开始启动APPMGR---------------"nohup java-jar $APPMGR > $APPMGR_log 2>&1 &APPMGR_pid=`lsof -i:$APPMGR_port|grep "LISTEN"|awk '{print $2}'`

until [-n "$APPMGR_pid"]doAPPMGR_pid=`lsof -i:$APPMGR_port|grep "LISTEN"|awk '{print $2}'`

done

echo"APPMGR pid is $APPMGR_pid"echo"---------APPMGR 启动成功-----------"## 启动organizeuser

echo"--------开始启动ORGANIZEUSER---------------"nohup java-jar $ORGANIZEUSER > $ORGANIZEUSER_log 2>&1 &ORGANIZEUSER_pid=`lsof -i:$ORGANIZEUSER_port|grep "LISTEN"|awk '{print $2}'`

until [-n "$ORGANIZEUSER_pid"]doORGANIZEUSER_pid=`lsof -i:$ORGANIZEUSER_port|grep "LISTEN"|awk '{print $2}'`

done

echo"ORGANIZEUSER pid is $ORGANIZEUSER_pid"echo"---------ORGANIZEUSER 启动成功-----------"## 启动jtmop

echo"--------开始启动JTMOP---------------"nohup java-jar $JTMOP > $JTMOP_log 2>&1 &JTMOP_pid=`lsof -i:$JTMOP_port|grep "LISTEN"|awk '{print $2}'`

until [-n "$JTMOP_pid"]doJTMOP_pid=`lsof -i:$JTMOP_port|grep "LISTEN"|awk '{print $2}'`

done

echo"JTMOP pid is $JTMOP_pid"echo"---------JTMOP 启动成功-----------"echo"===startAll success===";;

stop)

P_ID=`ps -ef | grep -w $EUREKA | grep -v "grep" | awk '{print $2}'`if [ "$P_ID" == ""]; then

echo"===EUREKA process not exists or stop success"

elsekill-9$P_ID

echo"EUREKA killed success"fi

P_ID=`ps -ef | grep -w $CONFIG | grep -v "grep" | awk '{print $2}'`if [ "$P_ID" == ""]; then

echo"===CONFIG process not exists or stop success"

elsekill-9$P_ID

echo"CONFIG killed success"fi

P_ID=`ps -ef | grep -w $GATEWAY | grep -v "grep" | awk '{print $2}'`if [ "$P_ID" == ""]; then

echo"===GATEWAY process not exists or stop success"

elsekill-9$P_ID

echo"GATEWAY killed success"fi

P_ID=`ps -ef | grep -w $AUTH | grep -v "grep" | awk '{print $2}'`if [ "$P_ID" == ""]; then

echo"===AUTH process not exists or stop success"

elsekill-9$P_ID

echo"AUTH killed success"fi

P_ID=`ps -ef | grep -w $LOG | grep -v "grep" | awk '{print $2}'`if [ "$P_ID" == ""]; then

echo"===LOG process not exists or stop success"

elsekill-9$P_ID

echo"LOG killed success"fi

P_ID=`ps -ef | grep -w $APPMGR | grep -v "grep" | awk '{print $2}'`if [ "$P_ID" == ""]; then

echo"===APPMGR process not exists or stop success"

elsekill-9$P_ID

echo"APPMGR killed success"fi

P_ID=`ps -ef | grep -w $ORGANIZEUSER | grep -v "grep" | awk '{print $2}'`if [ "$P_ID" == ""]; then

echo"===ORGANIZEUSER process not exists or stop success"

elsekill-9$P_ID

echo"ORGANIZEUSER killed success"fi

P_ID=`ps -ef | grep -w $JTMOP | grep -v "grep" | awk '{print $2}'`if [ "$P_ID" == ""]; then

echo"===JTMOP process not exists or stop success"

elsekill-9$P_ID

echo"JTMOP killed success"fi

echo"===stop success===";;

restart)

$0stop

sleep10$0start

echo"===restart success===";;

esac

exit0

三. shell脚本批量启动、批量停止、批量重启等步骤:

1. 脚本名:startupAll.sh

2. 先赋予脚本可执行权限:

chmod +x startupAll.sh

3. 执行批量启动的shell脚本命令:

./startupAll.sh start

4. 执行批量停止的shell脚本命令:

./startupAll.sh stop

5. 执行批量重启的shell脚本命令:

./startupAll.sh restart

四. 可能出现如下报错:

-bash: ./xxx.sh: /bin/sh^M: bad interpreter: No such file or directory

错误介绍:

通过上面我们可以看到有个^M个标志,这个标志是:Windows环境下dos格式文件传输到unix系统时,会在每行的结尾多一个^M,所以在执行的时候出现了这种现象,但是你在unix或者Linux环境下使用vi编辑的时候,会在下面显示此文件的格式,比如” startupAll.sh” [dos] 2L,20C字样,表示这是一个【dos】的格式文件,如果是MAC的系统则会出现【MAC】的字样,因为文件格式的原因,有时候我们是unix程序或shell程序,则就要把dos文件转化为unix的文件格式。

错误解决方式:有如下四种解决方式

解决方式1:

也是最简单的方法,直接在当前的文件目录下执行下面命令

sed -i -e 's/\r$//' startupAll.sh

解决方式2:

使用unix/Linux中的vi命令,更改fileformat格式

首先执行:

vistartupAll.sh

使用vi startupAll.sh查看时在最后一行会出现了下面的

"startupAll.sh" [dos] 2L, 19C

说明这个文件编码方式是windows编辑的,必须转化格式为unix格式 ,按ESC键,再次执行下面命令后

:set ff

敲回车,出现如下

fileformat=dos

修改为下面

vi test.sh

:set ff=unix

:x

解决方式3:

使用dos2unix和unix2dos命令

Linux提供了两种文本格式相互转化的命令:dos2unix和unix2dos,dos2unix把”\r\n”转化成”\n”,unixtodos把”\n”转化成”\r\n”。Java程序中,使用 Runtime.getRuntime().exec(“unix2dos “+ fileName);来实现对文本格式互转命令的调用。多说一句,执行指令前要先看看linux上是否有安装unix2dos/dos2unix工具。

1.首先查看是否安装了这个工具,使用grep正则使用

yum list installed | grep -nE 'dos2unix|dos2'

如果安装了这个工具,则执行下面命令

dos2unix startupAll.sh

出现下面显示说明转化ok

[root@hostname webapps]# dos2unix j.sh

dos2unix: converting file j.sh to Unix format ...

[root@hostname webapps]#

解决方式4:

在编辑代码的时候设置编辑器的line endings编码方式

如果你在Windows或Mac上使用sublime文本编辑脚本:单击View > Line ending > Unix并再次保存文件。例如:

5bd760e306daab0b91b0f0d29df9d35c.png

在notepad++中,您可以通过按下按钮为文件设置它 Edit –> EOL Conversion –> UNIX/OSX Format

849d3ca9092d0c25aa9dbd74df90d17c.png

Eclipse用户,您可以更改文件编码直接从 File > Convert Line Delimiters To > Unix (LF, \n, 0Α, ¶)

d3a9060883db0efaeb5a55ace2c31ba6.png

或者更改 Unix on Window > Preferences > General > Workspace panel:

a16e30deed2543df117024cd89c1e333.png

通过以上4中方式,选择其中一种即可,所以以后要注意这个文件的格式最好把你使用的编辑器设置为unix格式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值