Linux启动java服务脚本 您所在的位置:网站首页 linux脚本启动失败 Linux启动java服务脚本

Linux启动java服务脚本

2024-06-01 10:53| 来源: 网络整理| 查看: 265

在没有自动部署的环境下,如果调试java 服务,每次都需要kill掉之前的服务,然后再启动,虽然整个过程也只涉及如下三个命令,但是频繁调试时还是让人很崩溃的。

ps -ef | grep myjar#myjar为服务名 kill -9 123456 #假设myjar的线程号为123456 nohup java -jar -Xms1024m -Xms2048m myjar.jar & # 习惯使用nohup从后台启动。-Xms为jvm 参数,&不要漏了

封装成shell 脚本如下,命名为run.sh:

普通版

jar包提前打好了,这里只需为此jar包定制特定的脚本

#1,获取myjar的进程号 PID=$(ps -ef|grep myjar| grep -v grep | awk '{print $2}') #2,启动myjar的函数 start(){ nohup java -jar -Xms1024m -Xms2048m myjar.jar -p -i & } #3,判断1中获取的PID是否存在,即判断myjar有没有启动 if [ -z "$PID" ] then #4,日志 echo "Sart the myjar directly " #5,myjar之前没有启动的话,这里直接调用start函数 start else #6,myjar之前启动过且进程依然存活,则kill掉,然后调用start函数 echo "kill the existing myjar process firstly." kill -9 $PID echo " $PID has been killed" start fi

注: run.sh的权限需要设置成当前用户可以执行的状态,由于脚本中涉及到kill 命令,建议使用root权限执行。关于修改文件权限请学习chmod命令

进阶版

服务器上装有git,jar包通过mvn命令package,每次打包前是基于当前最新的代码,因此需要行执行git pull. 一般运维人员,不会将root权限赋予git, 所以需要普通用户去执行run,但run中的kill前需要加上sudo . 完整脚本如下:

#get the pid PID=$(ps -ef|grep myjar| grep -v grep | awk '{print $2}') start(){ echo "======Ready to build project======" mvn clean package -Dmaven.test.skip=true #是否跳过unit test,true 为跳过 # mvn clean package -P uat -Dmaven.test.skip=true #是否跳过unit test,true 为跳过. #-P指的是profile,uat指的是测试环境,pom中配置了profile才需要加上 #-P 环境 echo "======Build finished, ready to run======" nohup /usr/java/bin/java -jar -Xms1024m -Xms2048m target/myjar.jar & tail -f nohup.out } echo "======Ready to get latest code from repository======" git pull if [ -z "$PID" ] then echo "Sart the myjar directly " start else echo "kill the existing myjar process firstly." sudo kill -9 $PID # sudo一定要加 echo " $PID has been killed" start fi

下次启动时,进入到run.sh所在目录直接./run.sh,没有进入到所在目录则需要带上目录,例如./x/x/x/run.sh



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有