Linux通用的java程序启动脚本

  介绍

这篇文章主要讲解了Linux通用的java程序启动脚本,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

虽然写起动外壳的频率非常不高…但是每次要写都要对付一大堆的jar文件路径,新加的jar包也必须要修改起动壳。

在网上找到一个挺好的通用shell脚本。

只需要修改一些配置变量,就可以用来做起动脚本了。

并且除了能起动,还支持关闭,重启,查看是否正在运行的功能。

开始函数中,nohup部分其实也可以提出来放入一个配置变量中。这里没有修改直接贴上作者的原文

脚本代码如下:

# !/bin/sh   #该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动服务脚本被调用,   #也可以作为启动java程序的独立脚本来使用。   #   #作者:日期:2011/6/7 tudaxia.com   #   #警告! ! !:该脚本停止部分使用系统杀命令来强制终止指定的java程序进程。   #在杀死进程前,未作任何条件检查。在某些情况下,如程序正在进行文件或数据库写操作,   #可能会造成数据丢失或数据不完整。如果必须要考虑到这类情况,则需要改写此脚本,   #增加在执行杀命令前的一系列检查。   #   #   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   #环境变量及程序执行参数   #需要根据实际环境以及Java程序名称来修改这些参数   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   # JDK所在路径   JAVA_HOME=?usr/java/jdk"      #执行程序启动所使用的系统用户,考虑到安全,推荐不使用根帐号   RUNNING_USER=根      # Java程序所在的目录(类的上一级目录)   APP_HOME=/opt/tudaxia web - inf/测试/#需要启动的Java主程序(主方法类)   APP_MAINCLASS=com.tudaxia.test.TestMain      #拼凑完整的类路径参数,包括指定自由目录下所有的jar   CLASSPATH=$ APP_HOME/类   我在“APP_HOME"美元/lib/* . jar;做   CLASSPATH=癈LASSPATH"美元;:“我美元;   完成      # java虚拟机启动参数   JAVA_OPTS=?ms512m -mx512m -Xmn256m -Djava.awt。无头=true - xx: MaxPermSize=128 m"      # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   #(函数)判断程序是否已启动   #   #说明:   #使用JDK自带的JPS命令及grep命令组合,准确查找pid   # jps加l参数,表示显示java的完整包路径   #使用awk,分割出pid($ 1部分),及Java程序名称($ 2部分)   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   #初始化psid变量(全局)   psid=0      checkpid () {   javap=' $ JAVA_HOME/bin/jps - l | grep APP_MAINCLASS美元”      如果(- n“javaps"美元;];然后   psid=' echo $ javap | awk & # 39;{打印1美元}& # 39;”   其他的   psid=0   fi   }      # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   #(函数)启动程序   #   #说明:   # 1。首先调用checkpid函数,刷美元新psid全局变量   # 2。如果程序已经启动($ psid不等于0),则提示程序已启动   # 3。如果程序没有被启动,则执行启动命令行   # 4。启动命令执行后,再次调用checkpid函数   # 5。如果步骤4的结果能够确认程序的pid,则打印好,否则打印(失败)   #注意:echo - n表示打印字符后,不换行   #注意:“nohup某命令在/dev/null 2祝辞,1,“的用法   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   start () {   checkpid      如果(psid - ne 0美元);然后   回声“================================?   回声“警告:$ APP_MAINCLASS已经开始!(pid=$ psid)“;   回声“================================?   其他的   echo - n“开始APP_MAINCLASS美元……“   JAVA_CMD=皀ohup JAVA_OPTS美元$ JAVA_HOME/bin/java类路径类路径APP_MAINCLASS美元在/dev/null 2祝辞,1,“   苏- RUNNING_USER美元- c“JAVA_CMD"美元;   checkpid   如果(psid - ne 0美元);然后   回声“(pid=$ psid)[好]“;   其他的   回声”(失败),   fi   fi   }      # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   #(函数)停止程序   #   #说明:   # 1。首先调用checkpid函数,刷美元新psid全局变量   # 2。如果程序已经启动($ psid不等于0),则开始执行停止,否则,提示程序未运行   # 3。使用kill - 9 pid命令进行强制杀死进程   # 4。执行杀命令行紧接其后,马上查看上一句命令的返回值:美元,# 63;   # 5。如果步骤4的结果,美元# 63;等于0,则打印好,否则打印(失败)   # 6。为了防止java程序被启动多次,这里增加反复检查进程,反复杀死的处理(递归调用停止)。   #注意:echo - n表示打印字符后,不换行   #注意:在壳牌编程中,“美元,# 63;“表示上一句命令或者一个函数的返回值   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   stop () {   checkpid      如果(psid - ne 0美元);然后   echo - n“停止美元APP_MAINCLASS…(pid=$ psid)“;   苏- RUNNING_USER美元- c“kill - 9 psid"美元;   如果(美元),# 63;情商0);然后   回声“[好]“;   其他的   回声”(失败),   fi      checkpid   如果(psid - ne 0美元);然后   停止   fi   其他的   回声“================================?   回声“警告:$ APP_MAINCLASS不是running"   回声“================================?   fi   }      # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   #(函数)检查程序运行状态   #   #说明:   # 1。首先调用checkpid函数,刷美元新psid全局变量   # 2。如果程序已经启动($ psid不等于0),则提示正在运行并表示出pid   # 3。否,则提示程序未运行   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   状态(){   checkpid      如果(psid - ne 0美元);然后   回声“美元APP_MAINCLASS运行!(pid=$ psid)“;   其他的   回声“美元APP_MAINCLASS不是running"   fi   }      # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   #(函数)打印系统环境参数   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   info () {   回声“系统信息:“;   回声“* * * * * * * * * * * * * * * * * * * * * * * * * * * *”;   回声“头- n 1/etc/issue”   回声的uname—”   回声   回声“JAVA_HOME=$ JAVA_HOME"   echo $ JAVA_HOME/bin/java - version”   回声   回声“APP_HOME=$ APP_HOME"   回声“APP_MAINCLASS=$ APP_MAINCLASS"   回声“* * * * * * * * * * * * * * * * * * * * * * * * * * * *”;   }      # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   #读取脚本的第一个参数(1美元),进行判断   #参数取值范围:{开始|停止|重启| |状态信息}   #如参数不在指定范围之内,则打印帮助信息   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   例“1美元,在   & # 39;开始# 39;)   开始   ;;   & # 39;停止# 39;)   停止   ;;   & # 39;启动# 39;)   停止   开始   ;;   & # 39;状态# 39;)   状态   ;;   & # 39;信息# 39;)   信息   ;;   *)   回声“用法:$ 0{开始|停止|重启| |状态信息}“;   出口1   esac;

Linux通用的java程序启动脚本