shell启动脚本模板

#!/bin/bash

JAVA_OPTS="-Xms512m -Xmx512m"

API_NAME=auto-test-platform
JAR_NAME=${API_NAME}\.jar

# 使用说明,用来提示输入参数
usage() {
	echo "Usage: sh 执行脚本.sh [[start|stop|restart|status]]"
	exit 1
}

# 检查程序是否在运行
is_exist() {
	pid=$(ps -ef | grep ${JAR_NAME} | grep -v grep | awk '{print $2}')
	#如果不存在返回1,存在返回0
	if [[ -z "${pid}" ]]; then
		return 1
	else
		return 0
	fi
}

# 启动方法
start() {
	is_exist
	if [[ $? -eq "0" ]]; then
		echo ">>> ${JAR_NAME} is already running <<<"
	else
		echo "nohup java ${JAVA_OPTS} -jar ${JAR_NAME} > run.log 2>&1 &"
		nohup java ${JAVA_OPTS} -jar ${JAR_NAME} >run.log 2>&1 &
		echo -n "doing"
		for i in {1..30}; do
			start_log=$(cat run.log | grep "Tomcat started on port" | wc -l)
			if [[ ${start_log} == 1 ]]; then
				echo ""
				echo ">>> start ${JAR_NAME} successed <<<"
				return
			else
				echo -n "."
				sleep 1
			fi
		done
		echo ""
		echo ">>> start ${JAR_NAME} timeout, get detail in run.log <<<"
	fi
}

# 停止方法
stop() {
	is_exist
	if [[ ! ${pid} -gt 0 ]]; then
		echo ">>> ${JAR_NAME} is not running <<<"
		return
	fi
	echo ">>> begin to kill process at ${pid} <<<"
	kill -15 ${pid}
	sleep 2
	is_exist
	if [[ $? -eq "0" ]]; then
		echo ">>> use kill -15 failed, begin kill -9 ${pid} <<<"
		kill -9 ${pid}
		sleep 2
		echo ">>> ${JAR_NAME} process stopped: kill -9 <<<"
	else
		echo ">>> ${JAR_NAME} process stopped: kill -15 <<<"
	fi
}

# 输出运行状态
status() {
	is_exist
	if [[ $? -eq "0" ]]; then
		echo ">>> ${JAR_NAME} is running at ${pid} <<<"
		echo $(ps -ef | grep ${JAR_NAME} | grep -v grep)
	else
		echo ">>> ${JAR_NAME} is not running <<<"
	fi
}

# 重启
restart() {
	stop
	start
}

# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
	start
	;;
"stop")
	stop
	;;
"status")
	status
	;;
"restart")
	restart
	;;
*)
	usage
	;;
esac
exit 0
posted @ 2022-07-15 17:19  飞_2016  阅读(131)  评论(0编辑  收藏  举报