Linux下shell脚本启动及关闭java -jar程序,如果jar包中包含服务,可用于启动jar包中的服务。这个示例是用来启动RMI远程调用的接口注册的。
jar包:/app/java_app/registry/RmiRegistry-0.0.1.jar
日志目录:/app/java_app/registry/logs/
启动脚本(重启脚本):
startup.sh
#!/bin/sh
#jar包文件路径及名称(目录按照各自配置)
APP_NAME=/app/java_app/registry/RmiRegistry-0.0.1.jar
LOG_FILE=/app/java_app/registry/logs/RmiRegistry.log
pid=`ps -ef|grep "java -jar $APP_NAME" | grep -v grep | awk '{print $2}'`
echo "$pid"
kill -9 $pid
echo "$pid进程终止成功"
#判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
if test -e $APP_NAME
then
echo '开始启动程序...'
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java -jar $APP_NAME >> $LOG_FILE 2>&1 &
#实时查看启动日志(此处正在想办法启动成功后退出)
tail -f $LOG_FILE
#输出启动成功(上面的查看日志没有退出,所以执行不了,可以去掉)
#echo "$APP_NAME 启动成功..."
else
echo "$APP_NAME 文件不存在,请检查。"
fi
关闭脚本:
shutdown.sh
#!/bin/sh
#jar包文件路径及名称(目录按照各自配置)
APP_NAME=/app/java_app/registry/RmiRegistry-0.0.1.jar
LOG_FILE=/app/java_app/registry/logs/RmiRegistry.log
pid=`ps -ef|grep "java -jar $APP_NAME" | grep -v grep | awk '{print $2}'`
echo "$pid"
kill -9 $pid
echo "$pid进程终止成功"
echo "程序已关闭"
注意:jar包必须是可运行的jar包,其中要有main方法,并且指定了jar包运行的main方法。