编写通用shell脚本启动java项目,适用于多数服务,只需修改服务名即可

摘要:
文件名:service-user.sh文件内容:##shell脚本的头文件必须具有#!

文件名:service-user.sh

文件内容:

##shell脚本的头文件必须有
#!/bin/sh

##再次配置java环境变量以防报其他错误
## java env
#jdk安装目录
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre

## service name
APP_NAME=user

##服务存放的文件夹
SERVICE_DIR=/service/$APP_NAME
##服务名
SERVICE_NAME=edu-service-$APP_NAME
##jar包的名字
JAR_NAME=$SERVICE_NAME.jar
##生成进程文件
PID=$SERVICE_NAME.pid

##进入服务存放的文件夹
cd $SERVICE_DIR

##接收一个从linux控制台输入的参数 ./service-user.sh start/stop/restart
case "$1" in

##输入参数为start时启动项目
start)
##nohup守护进程启动项目,即使退出了终端项目仍在运行;/dev/null把日志输入到空即不输出日志到notout.out,因为项目里面已经有log4j日志了
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
echo $! > $SERVICE_DIR/$PID
echo "=== start $SERVICE_NAME"
;;

##输入参数为stop时停止项目
stop)
##杀死进程id即edu-service-user.pid
kill `cat $SERVICE_DIR/$PID`
#删除进程pid的文件
rm -rf $SERVICE_DIR/$PID
echo "=== stop $SERVICE_NAME"

#等待5s
sleep 5
##
## edu-service-aa.jar
## edu-service-aa-bb.jar
##获取进程id -w是全匹配,不加-w就是模糊匹配,可能会造成误杀进程
P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
#如果进程id为空就提示进程不存在或者已经停止
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
##如果进程id不为空就强杀进程
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill -9 $P_ID
fi
;;

##输入参数为restart时重启项目
restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;;

##什么都不输入时重启项目
*)
## restart 先停止再重启可以避免进程冲突,因为这样每次生成的进程id都不一样
$0 stop
sleep 2
$0 start
;;

esac
exit 0

免责声明:文章转载自《编写通用shell脚本启动java项目,适用于多数服务,只需修改服务名即可》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇QPS第二级削峰—流量网关+Nginx+lua+Redis+模板引擎K8S上的ELK和应用日志上报实战下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

xshell 安全加密

一、什么是 xshell: xshell 是一个远程执行命令的客户端程序,对应openssh-sever服务器程序(默认端口22) 套接字------------------网络----------------套接字 xshell                                                openssh-sever 为何...

jenkins操作手册以及脚本编写

一、在你的本地电脑或者linux服务器上下载安装jenkins: jenkins下载地址:https://jenkins.io/   下载jenkins的war包 下载完后把它部署到你的tomcat上运行:放到tomcat的webapps目录下,启动tomcat,然后通过浏览器访问,如我的电脑上访问:localhost:8080/jenkins 。启动后的...

linux下安装oracle 10g 的艰难之旅

在linux下安装oracle是一件令人生畏的事情,其复杂程度远远超过安装linux操作系统本身。如果能够进行成功的安装oracle,那么同时也就顺便掌握了linux一些技术。本文介绍在redhat linux 下安装oracle 10g 的方法。在这里说明一下,Oracle 10g的g是grid 的缩写,意为网格,目前较为前沿的网络计算技术。   Ora...

shell脚本操作mysql数据库—创建数据库,在该数据库中创建表(插入,查询,更新,删除操作也可以做)

#!/bin/bash HOSTNAME="192.168.1.224" #数据库Server信息PORT="3306"USERNAME="root"PASSWORD="123456" DBNAME="test_db_name" #要创建的数据库的库名称TABLENAME="test_table_name" #要创建的数据库的表的名称 MYSQL_CMD=...

Linux 利器- Python 脚本编程入门(一)

导读 众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写。大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会给你带来一些其它的好处。 首先,我们会使用 Python 的命令行工具,还会接触到 Python 的面向对象特性(这篇文章的后半部分会谈到它)。 学习 P...

adb shell 查看系统属性(用来判断特殊的操作系统)

一般来讲,在android程序开发中进行需要判断设备类型和系统版本 1、设备类型判断(android.os.Build.MODEL) 比如判断属于Google Nexus 5,Nexus 7,MIUI v5, MIUI v6,三星设备,魅族设备等; 这类型的问题都使用的android.os.Build.MODEL来判断,android.os.Build.M...