参考
防止原文被删记录下
#!/bin/bash
#jar包文件路径及名称(目录按照各自配置)
APP_NAME=/tn/project/syslogin.jar
#日志文件路径及名称(目录按照各自配置)
LOG_FILE=/opt/app/logs/syslogin.log
# 查询进程,并杀掉当前jar/java程序
pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
sleep 2
# 判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME
then
echo '文件存在,开始启动此程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar -Xmx1024m -Xms1024m $APP_NAME > /dev/null 2>&1 &
# 实时查看启动日志(此处正在想办法启动成功后退出)
tail -f $LOG_FILE
# 输出启动成功(上面的查看日志没有退出,所以执行不了,可以去掉)
#echo '$APP_NAME 启动成功...'
else
echo '$APP_NAME 文件不存在,请检查。'
fi
补充- 监听启动成功
# wc -l: jar包进程的数量
num=`ps -ef|grep $APP_NAME_SOUL |grep -v grep| awk '{print $2}'| wc -l`
if [[ $num -eq 1 ]];
then
echo '$APP_NAME_SOUL 启动成功...'
fi
实践
vim xx.sh
#!/bin/bash
#jar包文件路径及名称(目录按照各自配置)
APP_NAME_FILE=/doc/program/smart/file-0.0.1-SNAPSHOT.jar
APP_NAME_SOUL=/doc/program/smart/soul-admin.jar
APP_NAME_GATEWAY=/doc/program/smart/gateway-0.0.1-SNAPSHOT.jar
APP_NAME_APPOINTMENT=/doc/program/smart/appointment-0.0.1-SNAPSHOT.jar
APP_NAME_USER=/doc/program/smart/user-0.0.1-SNAPSHOT.jar
APP_NAME_SOLR=/doc/program/smart/solr-0.0.1-SNAPSHOT.jar
# 查询进程,并杀掉当前jar/java程序
pid=`ps -ef|grep $APP_NAME_FILE | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
sleep 1
pid=`ps -ef|grep $APP_NAME_SOUL | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
sleep 1
pid=`ps -ef|grep $APP_NAME_GATEWAY | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
sleep 1
pid=`ps -ef|grep $APP_NAME_APPOINTMENT | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
sleep 1
pid=`ps -ef|grep $APP_NAME_USER | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
sleep 1
pid=`ps -ef|grep $APP_NAME_SOLR | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
sleep 2
# 判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME_SOUL
then
echo '文件存在,开始启动此程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar -Xmx1024m -Xms1024m $APP_NAME_SOUL >/dev/null 2>&1 &
#echo '$APP_NAME_SOUL 启动成功...'
else
echo '$APP_NAME_SOUL 文件不存在,请检查。'
fi
sleep 2
# wc -l: jar包进程的数量
num=`ps -ef|grep $APP_NAME_SOUL |grep -v grep| awk '{print $2}'| wc -l`
if [[ $num -eq 1 ]];
then
echo '$APP_NAME_SOUL 启动成功...'
# 判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME_FILE
then
echo '文件存在,开始启动此程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar -Xmx512m -Xms512m $APP_NAME_FILE >/dev/null 2>&1 &
#echo '$APP_NAME_FILE 启动成功...'
else
echo '$APP_NAME_FILE 文件不存在,请检查。'
fi
sleep 2
# 判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME_GATEWAY
then
echo '文件存在,开始启动此程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar -Xmx512m -Xms512m $APP_NAME_GATEWAY >/dev/null 2>&1 &
#echo '$APP_NAME_GATEWAY 启动成功...'
else
echo '$APP_NAME_GATEWAY 文件不存在,请检查。'
fi
sleep 2
# 判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME_APPOINTMENT
then
echo '文件存在,开始启动此程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar -Xmx512m -Xms512m $APP_NAME_APPOINTMENT >/dev/null 2>&1 &
#echo '$APP_NAME_APPOINTMENT 启动成功...'
else
echo '$APP_NAME_APPOINTMENT 文件不存在,请检查。'
fi
sleep 2
# 判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME_USER
then
echo '文件存在,开始启动此程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar -Xmx512m -Xms512m $APP_NAME_USER >/dev/null 2>&1 &
#echo '$APP_NAME_USER 启动成功...'
else
echo '$APP_NAME_USER 文件不存在,请检查。'
fi
sleep 2
# 判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME_SOLR
then
echo '文件存在,开始启动此程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar -Xmx512m -Xms512m $APP_NAME_SOLR >/dev/null 2>&1 &
#echo '$APP_NAME_SOLR 启动成功...'
else
echo '$APP_NAME_SOLR 文件不存在,请检查。'
fi
fi