shell 脚本重启 java 服务

shell 脚本重启 java 服务

虽然刚开始的时候敲命令感觉挺有趣的,但是时间长了还是感觉麻烦。
因此编写了一个简易的重启服务脚本。
不得不说,为了编写这个脚本,虽然有各类文章参考,但还是废了很大的劲,毕竟第一次编写。
最大的一个坑就是使用命令直接执行和使用 shell + 参数执行得到的结果不一致!
最终还是排除掉脚本本身得到了正确答案。
停止服务的脚本如下:

#!/bin/bash
# stop.sh
# author kfyty
pCount=`ps -ef | grep "$*" | grep -v $0 | grep -v grep | wc -l`
pPid=`ps -ef | grep "$*" | grep -v $0 | grep -v grep | awk '{print $2}'`
if [ $pCount -gt 1 ]; then
	echo "more than one service[$*] found, please try again"
	exit 1
elif [ $pCount -eq 0 ]; then
	echo "no service[$*] running"
else
	if [ ! -n "$pPid" ]; then
		echo "service[$*] pid not found"
		exit 1
	else
		kill $pPid
		sec=1
		for i in {1..60};
		do
			sleep $sec
			pPid=`ps -ef | grep "$*" | grep -v $0 | grep -v grep | awk '{print $2}'`
			if [ ! -n "$pPid" ]; then
				echo "kill service[$*] success"
				break
			fi
		done	
	fi
fi
pPid=`ps -ef | grep "$*" | grep -v $0 | grep -v grep | awk '{print $2}'`
if [ -n "$pPid" ]; then
	echo "kill service[$*] failed"
	exit 1
fi

重启的脚本如下:

#!/bin/bash
# restart.sh
# author kfyty
source ./stop.sh $*
log=$1
jarArgs="-jar"
if [[ $* == *$jarArgs* ]]; then
	nohup $* > nohup.out 2>&1 &
else
	nohup java -jar $* > ${log%.jar}.log 2>&1 &
fi
pPid=`ps -ef | grep -w "$1" | grep -v $0 | grep -v grep | awk '{print $2}'`
if [ -n "$pPid" ]; then
        echo "start service[$*] success"
else
        echo "start service[$*] failed"
fi

使用方式:

sh restart.sh service.jar --args1 --args2

./restart.sh service.jar --args1 --args2

./restart.sh java -jar service.jar --args1 --args2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值