编写linux脚本语言,批量启动java进程

(linux环境)部署项目时,有时候系统不止一个,重复去启动效率太低,而且影响心情。这时候就可以采取批量启动的策略,下面先把脚本代码贴出来:

r包路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到
JAR_NAME1="solr-7.3.1-owl/bin/solr"
JAR_NAME2="admin-service/admin-service.jar"
JAR_NAME3="newowl-web/newowl-web.jar"
JAR_NAME4="owl-page/page.jar"
JAR_NAME5="search-service/search-service.jar"
JAR_NAME6="service-newowl/service-newowl.war"
# 日志路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到
LOG_PATh=main.log
# 如果输入格式不对,给出提示!
tips() {
	echo ""
	echo "WARNING!!!......Tips, please use command: sh auto_deploy.sh [start|stop|restart|status].   For example: sh auto_deploy.sh start  "
	echo ""
	exit 1
}
# 启动方法
start() {
        # 重新获取一下pid,因为其它操作如stop会导致pid的状态更新
	pid1=`ps -ef | grep solr-7.3.1-owl | grep -v grep | awk '{print $2}'`
	pid2=`ps -ef | grep $JAR_NAME2 | grep -v grep | awk '{print $2}'`
	pid3=`ps -ef | grep $JAR_NAME3 | grep -v grep | awk '{print $2}'`
	pid4=`ps -ef | grep $JAR_NAME4 | grep -v grep | awk '{print $2}'`
	pid5=`ps -ef | grep $JAR_NAME5 | grep -v grep | awk '{print $2}'`
	pid6=`ps -ef | grep $JAR_NAME6 | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行
	if [ -z $pid1 ]; then
        ./$JAR_NAME1 start -force
	fi
	if [ -z $pid2 ]; then
        nohup java -jar $JAR_NAME2 &
        echo "启动${JAR_NAME2}"
	fi
	if [ -z $pid3 ]; then
        nohup java -jar $JAR_NAME3 &
        echo "启动${JAR_NAME3}"
	fi
	if [ -z $pid4 ]; then
        nohup java -jar $JAR_NAME4 &
       	echo "启动${JAR_NAME4}"
	fi
	if [ -z $pid5 ]; then
        nohup java -jar $JAR_NAME5 &
        echo "启动${JAR_NAME5}"
	fi
	if [ -z $pid6 ]; then
        nohup java -jar $JAR_NAME6 &
        echo "启动${JAR_NAME6}"
	tail -f nohup.out
	fi
}
# 停止方法
stop() {
		# 重新获取一下pid,因为其它操作如start会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
	if [ -z $pid ]; then
		echo ""
        echo "Service ${JAR_NAME} is not running! It's not necessary to stop it!"
		echo ""
	else
		kill -9 $pid
		echo ""
		echo "Service stop successfully!pid:${pid} which has been killed forcibly!"
		echo ""
	fi
}
# 输出运行状态方法
status() {
        # 重新获取一下pid,因为其它操作如stop、restart、start等会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行。注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
	if [ -z $pid ];then
		echo ""
        echo "Service ${JAR_NAME} is not running!"
		echo ""
	else
		echo ""
        echo "Service ${JAR_NAME} is running. It's pid=${pid}"
		echo ""
	fi
}
# 重启方法
restart() {
	echo ""
	echo ".............................Restarting.............................."
	echo "....................................................................."
		# 重新获取一下pid,因为其它操作如start会导致pid的状态更新
	pid1=`ps -ef | grep solr-7.3.1-owl | grep -v grep | awk '{print $2}'`
	pid2=`ps -ef | grep $JAR_NAME2 | grep -v grep | awk '{print $2}'`
	pid3=`ps -ef | grep $JAR_NAME3 | grep -v grep | awk '{print $2}'`
	pid4=`ps -ef | grep $JAR_NAME4 | grep -v grep | awk '{print $2}'`
	pid5=`ps -ef | grep $JAR_NAME5 | grep -v grep | awk '{print $2}'`
	pid6=`ps -ef | grep $JAR_NAME6 | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
	if [ ! -z $pid1 ]; then
		kill -9 $pid1
	fi
	if [ ! -z $pid2 ]; then
		kill -9 $pid2
	fi
	if [ ! -z $pid3 ]; then
		kill -9 $pid3
	fi
	if [ ! -z $pid4 ]; then
		kill -9 $pid4
	fi
	if [ ! -z $pid5 ]; then
		kill -9 $pid5
	fi
	if [ ! -z $pid6 ]; then
		kill -9 $pid6
	fi
	start
	echo "....................Restart successfully!..........................."
}
# 根据输入参数执行对应方法,不输入则执行tips提示方法
case "$1" in
   "start")
     start
     ;;
   "stop")
     stop
     ;;
   "status")
     status
     ;;
   "restart")
     restart
     ;;
   *)
     tips
     ;;
esac

首先创建一个sh 文件,比如我的文件叫做restart.sh,然后把上面的脚本语言复制到文件里。保存退出之后,需要给这个文件赋权限。我这里示例赋予最高权限:chmod 777 restart.sh

赋权之后就可以执行启动命令了,在当前路径下执行:

./restart.sh restart(重启)

./restart.sh stop(关闭)

./restart.sh start(启动)

./restart.sh status(查看进程状态)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值