`
AILIKES
  • 浏览: 186353 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java程序启停脚本

阅读更多
  1. #!/bin/sh  
  2. #-------------------------------------------------------------------------------------------------------------  
  3. #实际使用中,需注意以下两点  
  4. #1)直接在Linux/UNIX上面创建并编写shell脚本  
  5. #  这是因为Windows下编写的*.sh文档格式和编码,是Linux/UNIX所不能完全承认的  
  6. #  最直接的体现就是使用过程中会遇到很多似是而非的错误,这曾经搞疯了一大片人  
  7. #2)编写完*.sh之后,记得[chmod 755 *.sh],否则会提示无法执行or没有权限执行等等  
  8. #-------------------------------------------------------------------------------------------------------------  
  9. #JDK路径  
  10. #JAVA_HOME="/usr/java/jdk1.6.0_31"  
  11.   
  12. #JVM启动参数  
  13. #-server:一定要作为第一个参数,在多个CPU时性能佳  
  14. #-Xloggc:记录GC日志,这里建议写成绝对路径,如此便可在任意目录下执行该shell脚本  
  15. #JAVA_OPTS="-ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"  
  16. JAVA_OPTS="-Duser.timezone=GMT+8 -server -Xms512m -Xmx512m -Xloggc:/app/code/CucPayTradePortalLog/gc.log"  
  17.   
  18. #Java程序日志所在的目录  
  19. APP_LOG=/app/code/CucPayTradePortalLog  
  20.   
  21. #Java程序主体所在的目录,即classes的上一级目录  
  22. APP_HOME=/app/code/CucPayTradePortal  
  23.   
  24. #Java主程序,即main(String[] args)方法类  
  25. APP_MAIN=com.cucpay.tradeportal.MainApp  
  26.   
  27. #classpath参数,包括指定lib目录下的所有jar  
  28. CLASSPATH=$APP_HOME/classes  
  29.   
  30. for tradePortalJar in "$APP_HOME"/lib/*.jar  
  31. do  
  32.    CLASSPATH="$CLASSPATH":"$tradePortalJar"  
  33. done  
  34.   
  35. #-------------------------------------------------------------------------------------------------------------  
  36. #getTradeProtalPID()-->获取Java应用的PID  
  37. #说明:通过JDK自带的JPS命令及grep命令,准确查找Java应用的PID  
  38. #其中:[jps -l]表示显示Java主程序的完整包路径  
  39. #     awk命令可以分割出PID($1部分)及Java主程序名称($2部分)  
  40. #例子:[$JAVA_HOME/bin/jps -l | grep $APP_MAIN]-->>[5775 com.cucpay.tradeportal.MainApp]  
  41. #另外:用这个命令也可以直接取到程序的PID-->>[ps aux|grep java|grep $APP_MAIN|grep -v grep|awk '{print $2}']  
  42. #-------------------------------------------------------------------------------------------------------------  
  43. #初始化全局变量tradePortalPID,用于标识交易前置系统的PID,0表示未启动  
  44. tradePortalPID=0  
  45.    
  46. getTradeProtalPID(){  
  47.     javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`  
  48.     if [ -n "$javaps" ]; then  
  49.         tradePortalPID=`echo $javaps | awk '{print $1}'`  
  50.     else  
  51.         tradePortalPID=0  
  52.     fi  
  53. }  
  54.   
  55. #-------------------------------------------------------------------------------------------------------------  
  56. #startup()-->启动Java应用程序  
  57. #步骤:1)调用getTradeProtalPID()函数,刷新$tradePortalPID全局变量  
  58. #     2)若程序已经启动($tradePortalPID不等于0),则提示程序已启动  
  59. #     3)若程序未被启动,则执行启动命令  
  60. #     4)启动命令执行后,再次调用getTradeProtalPID()函数  
  61. #     5)若步骤4执行后,程序的PID不等于0,则打印[Success],否则打印[Failed]  
  62. #注意:[echo -n]表示打印字符后,不换行  
  63. #注意:[nohup command > /path/nohup.log &]是将作业输出到nohup.log,否则它会输出到该脚本目录下的nohup.out中  
  64. #-------------------------------------------------------------------------------------------------------------  
  65. startup(){  
  66.     getTradeProtalPID  
  67.     echo "======================================================================================"  
  68.     if [ $tradePortalPID -ne 0 ]; then  
  69.         echo "$APP_MAIN already started(PID=$tradePortalPID)"  
  70.         echo "======================================================================================"  
  71.     else  
  72.         echo -n "Starting $APP_MAIN"  
  73.         nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAIN > $APP_LOG/nohup.log &  
  74.         getTradeProtalPID  
  75.         if [ $tradePortalPID -ne 0 ]; then  
  76.             echo "(PID=$tradePortalPID)...[Success]"  
  77.             echo "======================================================================================"  
  78.         else  
  79.             echo "[Failed]"  
  80.             echo "======================================================================================"  
  81.         fi  
  82.     fi  
  83. }  
  84.   
  85. #-------------------------------------------------------------------------------------------------------------  
  86. #shutdown()-->停止Java应用程序  
  87. #步骤:1)调用getTradeProtalPID()函数,刷新$tradePortalPID全局变量  
  88. #     2)若程序已经启动($tradePortalPID不等于0),则开始执行停止程序操作,否则提示程序未运行  
  89. #     3)使用[kill -9 PID]命令强制杀掉进程  
  90. #     4)使用[$?]获取上一句命令的返回值,若其为0,表示程序已停止运行,则打印[Success],反之则打印[Failed]  
  91. #     5)为防止Java程序被启动多次,这里增加了反复检查程序进程的功能,通过递归调用shutdown()函数的方式,反复kill  
  92. #注意:Shell编程中,[$?]表示上一句命令或者上一个函数的返回值  
  93. #-------------------------------------------------------------------------------------------------------------  
  94. shutdown(){  
  95.     getTradeProtalPID  
  96.     echo "======================================================================================"  
  97.     if [ $tradePortalPID -ne 0 ]; then  
  98.         echo -n "Stopping $APP_MAIN(PID=$tradePortalPID)..."  
  99.         kill -9 $tradePortalPID  
  100.         if [ $? -eq 0 ]; then  
  101.             echo "[Success]"  
  102.             echo "======================================================================================"  
  103.         else  
  104.             echo "[Failed]"  
  105.             echo "======================================================================================"  
  106.         fi  
  107.         getTradeProtalPID  
  108.         if [ $tradePortalPID -ne 0 ]; then  
  109.             shutdown  
  110.         fi  
  111.     else  
  112.         echo "$APP_MAIN is not running"  
  113.         echo "======================================================================================"  
  114.     fi  
  115. }  
  116.   
  117. #-------------------------------------------------------------------------------------------------------------  
  118. #getServerStatus()-->检查程序运行状态  
  119. #-------------------------------------------------------------------------------------------------------------  
  120. getServerStatus(){  
  121.     getTradeProtalPID  
  122.     echo "======================================================================================"  
  123.     if [ $tradePortalPID -ne 0 ]; then  
  124.         echo "$APP_MAIN is running(PID=$tradePortalPID)"  
  125.         echo "======================================================================================"  
  126.     else  
  127.         echo "$APP_MAIN is not running"  
  128.         echo "======================================================================================"  
  129.     fi  
  130. }  

 

下面是我整理的用于启动Java应用程序的startup.sh(可单独使用)

  1. #!/bin/sh  
  2. #-------------------------------------------------------------------------------------------------------------  
  3. #该脚本的使用方式为-->[sh startup.sh]  
  4. #该脚本可在服务器上的任意目录下执行,不会影响到日志的输出位置等  
  5. #-------------------------------------------------------------------------------------------------------------  
  6. #JAVA_HOME="/usr/java/jdk1.6.0_31"  
  7. JAVA_OPTS="-Duser.timezone=GMT+8 -server -Xms2048m -Xmx2048m -Xloggc:/app/code/CucPayTradePortalLog/gc.log"  
  8. APP_LOG=/app/code/CucPayTradePortalLog  
  9. APP_HOME=/app/code/CucPayTradePortal  
  10. APP_MAIN=com.cucpay.tradeportal.MainApp  
  11. CLASSPATH=$APP_HOME/classes  
  12. for tradePortalJar in "$APP_HOME"/lib/*.jar;  
  13. do  
  14.    CLASSPATH="$CLASSPATH":"$tradePortalJar"  
  15. done  
  16.   
  17. tradePortalPID=0  
  18.   
  19. getTradeProtalPID(){  
  20.     javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`  
  21.     if [ -n "$javaps" ]; then  
  22.         tradePortalPID=`echo $javaps | awk '{print $1}'`  
  23.     else  
  24.         tradePortalPID=0  
  25.     fi  
  26. }  
  27.   
  28. startup(){  
  29.     getTradeProtalPID  
  30.     echo "================================================================================================================"  
  31.     if [ $tradePortalPID -ne 0 ]; then  
  32.         echo "$APP_MAIN already started(PID=$tradePortalPID)"  
  33.         echo "================================================================================================================"  
  34.     else  
  35.         echo -n "Starting $APP_MAIN"  
  36.         nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAIN > $APP_LOG/nohup.log &  
  37.         getTradeProtalPID  
  38.         if [ $tradePortalPID -ne 0 ]; then  
  39.             echo "(PID=$tradePortalPID)...[Success]"  
  40.             echo "================================================================================================================"  
  41.         else  
  42.             echo "[Failed]"  
  43.             echo "================================================================================================================"  
  44.         fi  
  45.     fi  
  46. }  
  47.   
  48. startup  

 

下面是我整理的用于停止Java应用程序的shutdown.sh(可单独使用)

  1. #!/bin/sh  
  2. APP_MAIN=com.cucpay.tradeportal.MainApp  
  3.   
  4. tradePortalPID=0  
  5.    
  6. getTradeProtalPID(){  
  7.     javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`  
  8.     if [ -n "$javaps" ]; then  
  9.         tradePortalPID=`echo $javaps | awk '{print $1}'`  
  10.     else  
  11.         tradePortalPID=0  
  12.     fi  
  13. }  
  14.   
  15. shutdown(){  
  16.     getTradeProtalPID  
  17.     echo "================================================================================================================"  
  18.     if [ $tradePortalPID -ne 0 ]; then  
  19.         echo -n "Stopping $APP_MAIN(PID=$tradePortalPID)..."  
  20.         kill -9 $tradePortalPID  
  21.         if [ $? -eq 0 ]; then  
  22.             echo "[Success]"  
  23.             echo "================================================================================================================"  
  24.         else  
  25.             echo "[Failed]"  
  26.             echo "================================================================================================================"  
  27.         fi  
  28.         getTradeProtalPID  
  29.         if [ $tradePortalPID -ne 0 ]; then  
  30.             shutdown  
  31.         fi  
  32.     else  
  33.         echo "$APP_MAIN is not running"  
  34.         echo "================================================================================================================"  
  35.     fi  
  36. }  
  37.   
  38. shutdown  


最后是我整理的用于查看Java应用程序运行状态的serverStatus.sh(可单独使用)

  1. #!/bin/sh  
  2. APP_MAIN=com.cucpay.tradeportal.MainApp  
  3.   
  4. tradePortalPID=0  
  5.   
  6. getTradeProtalPID(){  
  7.     javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`  
  8.     if [ -n "$javaps" ]; then  
  9.         tradePortalPID=`echo $javaps | awk '{print $1}'`  
  10.     else  
  11.         tradePortalPID=0  
  12.     fi  
  13. }  
  14.   
  15. getServerStatus(){  
  16.     getTradeProtalPID  
  17.     echo "================================================================================================================"  
  18.     if [ $tradePortalPID -ne 0 ]; then  
  19.         echo "$APP_MAIN is running(PID=$tradePortalPID)"  
  20.         echo "================================================================================================================"  
  21.     else  
  22.         echo "$APP_MAIN is not running"  
  23.         echo "================================================================================================================"  
  24.     fi  
  25. }  
  26.   
  27. getServerStatus  
分享到:
评论

相关推荐

    jar包自动化启停脚本,支持开机自启

    内容概要:本脚本基于生产大量jar需要启动而编写,提升启动效率。通过参数可以实现目录下所有jar的循环启动以及单个目录下的jar包启动。 适用人群:生产环境运维人员,需要大量启动jar包的人员、需要设置开机自启动...

    tomcat自动启停脚本

    创建和使用Tomcat自动启停脚本是系统管理员和开发者为了提高效率和便捷性的重要手段。下面将详细介绍如何创建和理解这样的脚本,以及它们在实际运维中的作用。 一、Tomcat简介 Tomcat是Apache软件基金会的Jakarta...

    Shell脚本通过Java class文件启停Java程序源码(脚本及源码)

    在开发过程中经常会员到在Linux环境中使用Shell脚本启动和停止java程序的情况,常用的java -jar命令只能运行jar文件...以及程序的启动和停止脚本(非java -jar命令启动,使用shell脚本通过java class文件启停java程序)

    java程序产品包模板-内置linux和Windows通用shell启动停止脚本(无需系统安装Java运行环境).zip

    该压缩包文件“java程序产品包模板-内置linux和Windows通用shell启动停止脚本(无需系统安装Java运行环境).zip”提供了一套适用于Java程序的通用打包方案,特别强调了其能够在Linux和Windows操作系统上无缝运行,且不...

    kafka一键启停脚本

    "Kafka一键启停脚本"是针对Kafka集群管理的实用工具,能够简化操作流程,提高运维效率。 首先,我们需要理解Kafka的基本概念。Kafka的核心组件包括生产者(Producer)、消费者(Consumer)和主题(Topic)。生产者...

    某银行用了10多年的Java-jar启停脚本(超详细).zip

    某银行用了10多年的Java启动脚本,包括运行状态检查,如果程序正在运行则杀死,杀死期间循环检查,直到杀死或者杀死超时,然后重新启动,如果程序没有运行则直接启动,启动期间每间隔一定时间检测一次,直到启动成功或者超时...

    java 操作脚本启动服务

    在Java开发中,有时我们需要通过脚本来控制服务的启停,特别是在分布式系统或者服务器环境的运维中,这种操作是常见的需求。本主题将详细介绍如何利用Java编写脚本启动和停止服务,以及涉及到的相关技术点。 首先,...

    Springboot-服务-Windows 一键启动、停止脚本

    在IT行业中,Spring Boot是一个非常流行的Java框架,用于简化Spring应用程序的开发过程。它通过预配置许多默认设置,使得创建独立运行的、生产级别的Java应用变得简单。在Windows环境中,通常需要手动启动或停止这些...

    Java启动关闭脚本.zip

    这个"Java启动关闭脚本.zip"文件包含的就是这样的脚本,用于自动化Java程序的启停操作。其中的"start.sh"和"stop.sh"是两个关键的Shell脚本,它们在Unix/Linux系统中被广泛使用。 首先,我们来详细了解一下`start....

    Windows下设置守护进程JAR包挂掉自动重启,bat文件(已完美测试)

    这个bat脚本资源可以在Windows环境下实现Java程序的守护进程和自动重启。它通过一个循环监控Java程序进程,如果检测到程序异常退出,会自动重启程序。同时具有可配置的重启次数和重启间隔时间。 这个小巧但实用的bat...

    Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法

    在Linux环境中,管理和部署Java应用程序,特别是Spring Boot应用,通常会使用Shell脚本来自动化启动、停止等操作。本文将详细讲解如何编写一个用于启动和停止Spring Boot jar程序的Shell脚本,以及脚本中涉及的关键...

    Linux下定时任务,命令启停jar包服务

    在 `robotcenter.sh` 脚本中,使用了多个变量来配置 Java 环境变量,如 `JAVA_HOME`、`JRE_HOME` 和 `CLASSPATH`。这些变量用于指定 Java 的安装路径和类库路径。 在脚本中,还定义了多个函数,包括 `start`、`stop...

    weblogic监控 weblogic调优 weblogic版本区别 weblogic启动关闭脚本

    WebLogic Server是一款由Oracle公司开发的企业级Java应用服务器,它为构建、部署和管理企业级Java应用程序提供了全面的平台。本文将深入探讨WebLogic的监控、调优、不同版本之间的区别以及启动和关闭脚本的使用。 ...

    Cognos安装、配置、启停概要介绍

    本篇将详细阐述Cognos的安装、配置以及启停过程中的关键知识点。 一、Cognos安装 1. **系统需求**:在开始安装前,确保你的操作系统满足Cognos的最低硬件和软件要求,包括兼容的操作系统(如Windows或Linux)、...

    linux bash脚本监控启动停止weblogic服务的脚本写法

    WebLogic是Oracle公司的一款企业级Java应用服务器,用于部署和管理Java应用程序。这里,我们将深入探讨如何编写一个Bash脚本来启动、停止和检查WebLogic服务器的状态。 首先,我们需要设置一些环境变量来指定...

    tomcat6启动脚本

    首先,启动脚本是控制Tomcat服务启停的关键。在Tomcat6中,这个脚本通常位于`$CATALINA_HOME/bin`目录下,名为`catalina.sh`。此脚本主要由一系列shell命令组成,用于设置环境变量、调用Java虚拟机(JVM)以及执行...

    windows守护进程,开机自动重启,进程监测

    使用.net core开发的web项目,使用控制台方式运行的。同一份程序放在不同目录,而且采用了启动多个实例实现了负载... 也找过 现场的脚本、python的程序、pm2守护方式,感觉都不能满足要求。所以决定自己开发一个。

    linux下VNC安装,启停及其他操作,及客户端操作

    该命令会提示设置密码,设置完毕后,会创建一个新的 `.Xauthority` 文件,并创建一个默认的启动脚本 `xstartup` 文件位于 `/root/.vnc/` 目录下,用于定义启动时需要运行的应用程序列表。日志文件存储在 `/root/.vnc...

    java 发布windows服务

    - 控制服务:使用`net start`和`net stop`命令控制服务的启停。 在实际开发中,你还需要考虑服务的异常处理、日志记录、自动重启策略等。确保服务在遇到问题时能够正确地记录错误信息,并根据需要自动恢复或通知...

    Oracle中Java虚拟机的实现.pdf

    这个脚本包含了创建Java基本类、建立公共同义词、创建有权使用Java的角色、定义数据库启停触发器以及配置CORBA和EJB所需的JVM步骤。此外,还需要安装DBMS_JAVA包和SQLJ。 安装完成后,可以通过查询dba_objects表中...

Global site tag (gtag.js) - Google Analytics