该脚本提供了4个函数
info():打印系统环境参数,启动命令为./java.sh info
start():启动程序,启动命令为./java.sh start
stop():停止程序,启动命令为./java.sh stop
status():查看状态,启动命令为./java.sh status
在启动命令前需cd目录到 java.sh 所在目录
java.sh
#!/bin/bash
#Publish over SSH远程执行shell时需加上这句
source /etc/profile
#jdk所在路径
JAVA_HOME='/usr/local/java/jdk1.8.0_241'
#项目名称
APP_NAME=springbootdemo-1.0-SNAPSHOT.jar
#项目所在路径
APP_HOME=/root/data/$APP_NAME
#jvm启动参数
JAVA_OPTS='-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./heap'
#初始化psid变量
psid=0
##################################
#打印系统环境参数
##################################
info() {
echo "System information:"
echo "***********************"
echo `head -n 1 /etc/issue`
echo `uname -a`
echo
echo "JAVA_HOME = $JAVA_HOME"
echo `java -version`
echo
echo "***********************"
}
##################################
#判断程序是否启动,并返回进程id
##################################
checkpid() {
javaps=`ps -ef | grep $APP_NAME | grep -v auto | grep -v kill | grep -v grep | awk '{print $2}'`
if [ -n "$javaps" ] ;then
psid=`echo $javaps`
else
psid=0
fi
}
##################################
#启动程序
##################################
start() {
checkpid
if [ "$psid" -ne 0 ]; then
echo "warn: app already started!(psid = $psid)"
else
echo -n "***********starting************"
JAVA_CMD=`nohup java $JAVA_OPTS -jar $APP_HOME >/dev/null 2>&1 &`
echo "start success"
fi
}
##################################
#停止程序
##################################
stop() {
checkpid
if [ "$psid" -ne 0 ] ;then
echo -n "Stopping app(pid = $psid)"
kill -9 $psid
if [ $? -eq 0 ] ;then
echo "stop success"
else
echo "stop fail"
fi
else
echo "***********************"
echo "warn app is not running"
echo "***********************"
fi
}
##################################
#查看状态
##################################
status() {
checkpid
if [ $psid -ne 0 ] ;then
echo "app is running(pid=$psid)"
else
echo "app is not running"
fi
}
case "$1" in
'info')
info
;;
'start')
start
;;
'stop')
stop
;;
'status')
status
;;
esac