接着昨天的内容《Centos部署JAVA项目》往下写,如何通过sh脚本运行JAVA项目。
我打算改一下写文章的思路,把最重要的东西放在文章的前面。因为很多朋友都是通过搜索引擎过来的,最关心的就是如何解决自己的问题。至于如何实现的,相对而言没有那么紧要,就放到文章的后面。
在jar包的同级新建一个.sh文件
把下面这段复制进去,注意要把里面的projectName改成你自己的jar包名字
#! /bin/sh
projectName=”你的jar包名字,不用带.jar”#提醒功能
help() {
echo “help: sh ${projectName}.sh [start|stop|restart]”
exit 1
}#判断项目是否运行,并且返回对应数字(0 为未启动 1为启动)
is_exist(){
#获取pid的方式,个人喜欢咋写就咋写
pid=`ps -ef|grep ${projectName}.jar|grep -v grep|awk ‘{print $2}’`
if [ -z “${pid}” ]
then
return 0
else
return 1
fi
}#开始运行项目
start(){
is_exist
#如果正在运行直接提示
if [ $? -eq 1 ]
then
echo “${projectName} is running”
exit 0;
else
#没有运行则运行项目
echo “start running ${projectName} …”
currentPath=`pwd`
startPath=$(cd `dirname $0`;pwd)
#这里写的比较简单,实际生产环境,需要配置参数
cd ${startPath}
nohup java -jar -server ${projectName}.jar > ${projectName}/run.log 2>&1 &
cd ${currentPath}
fi
}#停止项目
stop(){
echo “stop $projectName …”
is_exist
if [ $? -eq 1 ]
then
#通过pid关闭
kill -9 $pid
echo “[ok]”
else
echo “[ok]”
fi
}//选择运行方式
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
help
;;
esac
运行脚本
sh sh文件的名字.sh [start|stop|restart]
sh sh文件的名字.sh start 表示启动项目
sh sh文件的名字.sh stop 表示停止项目
sh sh文件的名字.sh restart 表示重启项目
个人经验
其实在开始的时候,我也不是通过脚本启动项目的,是直接通过命令 nohup java -jar XXXX 来运行的。
但是这种方式,每次运行项目都要手动输入一次命令,很繁琐而且容易出错。
所以一种更好的方式就是把启动、停止、重启命令都写到脚本里,一劳永逸。