转自:http://blog.csdn.net/jadyer/article/details/7960802

资料参考来源自兔大侠,并略作修改:http://www.tudaxia.com/archives/10,在此鸣谢!!

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

下面是我整理的用于启动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. tradePortalPID=0
  17. getTradeProtalPID(){
  18. javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`
  19. if [ -n "$javaps" ]; then
  20. tradePortalPID=`echo $javaps | awk '{print $1}'`
  21. else
  22. tradePortalPID=0
  23. fi
  24. }
  25. startup(){
  26. getTradeProtalPID
  27. echo "================================================================================================================"
  28. if [ $tradePortalPID -ne 0 ]; then
  29. echo "$APP_MAIN already started(PID=$tradePortalPID)"
  30. echo "================================================================================================================"
  31. else
  32. echo -n "Starting $APP_MAIN"
  33. nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAIN > $APP_LOG/nohup.log &
  34. getTradeProtalPID
  35. if [ $tradePortalPID -ne 0 ]; then
  36. echo "(PID=$tradePortalPID)...[Success]"
  37. echo "================================================================================================================"
  38. else
  39. echo "[Failed]"
  40. echo "================================================================================================================"
  41. fi
  42. fi
  43. }
  44. startup

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

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

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

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

Linux下启动和停止Java应用程序的Shell脚本的更多相关文章

  1. linux下启动和终止JAVA程序shell脚本

    1.启动脚本start.sh #run application backgroud nohup java -jar chess-admin->& & #record the pr ...

  2. linux下启动、停止tomcat,杀死tomcat进程

    1.打开终端 cd /java/tomcat 2.执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina ...

  3. Linux下启动、停止xampp命令

    启动xampp: /opt/lampp/./lampp start 停止xampp: /opt/lampp/./lampp stop 卸载xampp: rm -rf /opt/lampp

  4. Linux下启动tomcat报java.lang.OutOfMemoryError: PermGen space

    一.错误信息 java.lang.reflect.InvocationTargetException    at sun.reflect.NativeMethodAccessorImpl.invoke ...

  5. 在linux下sh批处理文件调用java的方法

    解密 java -classpath collection-impl-0.0.1.jar com.ai.toptea.collection.message.DESEncrypt 1EFE4663895 ...

  6. 在Linux下启动Java服务的脚本

    #!/bin/sh #该脚本为Linux下启动java程序的通用脚本.即可以作为开机自启动service脚本被调用, #也可以作为启动java程序的独立脚本来使用. # #Author: tudaxi ...

  7. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  8. linux 下启动java jar包 shell

    linux 下启动java jar包 shell #!/bin/sh JAVA_HOME=/usr/local/jdk1.6.0_34/bin/javaJAVA_OPTS="-Xmx256m ...

  9. Linux下启动Oracle服务和监听程序步骤

    Linux下启动Oracle服务和监听程序启动和关闭步骤整理如下: 1.安装oracle: 2.创建oracle系统用户: 3./home/oracle下面的.bash_profile添加几个环境变量 ...

随机推荐

  1. VO、DTO、DO、PO的概念、区别和用处

    转至:http://qixuejia.cnblogs.com/ 本篇文章主要讨论一下我们经常会用到的一些对象:VO.DTO.DO和PO. 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概 ...

  2. dev....把pivotgridview和chart一起导出

    首先~: 命名空间: using DevExpress.XtraPrinting;using DevExpress.XtraCharts.Native;using DevExpress.XtraPri ...

  3. Python的数值和字符串

    Python数据类型 1.数值 --类型:  1/整型 2/长整型   3/浮点型 -- 0.0, 12.0, -18.8, 3e+7等 4/复数型 -- complex  In []: 0x34al ...

  4. PHP在变量前面加&是什么意思

    比如: <? php $a = 'c' ; $b = & $a ; //表示$b 和 $a 引用了同一个变量 $a = 'abc' ; //这里重置了$a echo $b ; //将输出 ...

  5. input标签获取焦点时文本框内提示信息清空背景颜色发生变化

    <input type="text" id="username" onfocus="myFocus(this,'#f4eaf1')" ...

  6. iframe子页面获取父页面元素和window对象

    项目中发现要在iframe的弹框中获取父页面中的元素,我们可以按照如下代码操作:$(window.parent.document).find('selector').attr('XXX') 如果我们需 ...

  7. selenium+python自动化80-文件下载(不弹询问框)【转载】

    转至博客:上海-悠悠 前言 上一篇是点弹出框上的按钮去保存文件,本篇介绍一种更加优雅的方法,加载Firefox和Chrome的配置文件,不弹出询问框后台下载. 一.FirefoxProfile 1.点 ...

  8. 解决Tomcat因Redis加载慢而启动失败的问题

    StartTomcat.py import subprocess as t import time, os, requests, sys WEB_IP = '127.0.0.1:8080' # WEB ...

  9. hdu5823

    官方题解:直接状压dp就行了,f[S]表示点集S的色数,枚举子集转移(子集是独立集).这样是3^n的. 这样就可以过了……(独立集就是点互相没有连边) 学到了一个穷举子集的简便写法 for (int ...

  10. go chapter 6 - map array

    遍历 for i,v := range *arr { // 遍历数组,第一个参数为index, 第二个参数为元素 fmt.Println("---------------") fm ...