【linux】实现一个简单的程序启动脚本

功能: 在linux上执行 启动:sh tool.sh start , 停止:sh tool.sh stop。目录结构如下所示:*.jar为java代码包,lib下为程序依赖的jar,log下为本程序生成运行的过程日志,resources里面为相关资源配置文件等。该脚本需要tool.sh和程序jar需要在一个目录下(可修改)。

目录结构:

在这里插入图片描述

脚本如下:
#!/bin/bash

USER_DIR=`pwd`/log
# jar包名称
JAR_NAME=ApplicationDemo.jar
JAR_PATH=`pwd`/$JAR_NAME
# 主类即main方法所在的启动类
MAIN_CLASS=com.na.NativeApplication
# 定义色彩
SETCOLOR_SUCCESS="echo -en \\033[1;32m"  
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \\033[0;39m"
# 各种控制台颜色方法输出
function LogMsg()
{
	time=`date "+%D %T"`
	echo "[$time] : INFO    : $*"
	$SETCOLOR_NORMAL
}
function LogWarnMsg()
{
	time=`date "+%D %T"`
	$SETCOLOR_WARNING
	echo "[$time] : WARN    : $*"
	$SETCOLOR_NORMAL
}
function LogSucMsg()
{
	time=`date "+%D %T"`
	$SETCOLOR_SUCCESS
	echo "[$time] : SUCCESS : $*"
	$SETCOLOR_NORMAL
}
function LogErrorMsg()
{
	time=`date "+%D %T"`
	$SETCOLOR_FAILURE
	echo "[$time] : ERROR   : $*"
	$SETCOLOR_NORMAL
}
if [ ! -d $USER_DIR ];then
	mkdir -p $USER_DIR
fi
# 检查机器环境java版本
check_java(){
	JAVA_VERSION_NUM="1.7"
	JAVA_VERSION=`java -version 2>&1`
	LogMsg $JAVA_VERSION
	if [[ $JAVA_VERSION =~ $JAVA_VERSION_NUM ]]
	then
		LogSucMsg "OK!Java1.7 installed"
	else
		LogErrorMsg "Error! not found java 1.7! please installed jdk 1.7 version first!"
		exit 0
	fi
}
# 脚本启动样例提示
input_type(){
	LogMsg " sh tool.sh <TYPE>"
	LogMsg " TYPE:"
	LogMsg " 	start"
	LogMsg " 	stop"
}
# 启动
start(){
	LogSucMsg "begin start server"
	check_java
	LogMsg "CurrentPath:$JAR_PATH"
	confpath=".:./resources/"
	libpath="$confpath:$JAR_PATH"
	# 遍历lib下的所有jar加入到启动命令中
	for jar in `find ./lib/ -name "*.jar" 2>/dev/null`
	do
	 	libpath="$libpath:$jar"
	done
	LogMsg "$JAVA_HOME/bin/java -classpath $libpath $MAIN_CLASS"
	# 日志全部输出到log目录下的tool.log中
	nohup $JAVA_HOME/bin/java -classpath $libpath $MAIN_CLASS > $USER_DIR/tool.log 2>&1 &
	LogSucMsg "start succeed!"
}
# 停止程序
stop(){
	LogSucMsg "begin close server"
	# 通过程序名称找到运行的全部进程id 逐一 kill干掉
	pids=$(ps -ef |grep 'NativeApplication' | awk '{print $2}')
	for pid in $pids
	do
	 	kill -9 $pid
	 	LogSucMsg "kill pid $pid !"
	done
	LogSucMsg "close succeed!"
}
case "$1" in
		start)
			start
			;;
		stop)
			stop
			;;
		*)
			input_type
			exit 0
esac


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值