Linux下启动和停止Java应用程序的Shell脚本
转自:http://blog.csdn.net/jadyer/article/details/7960802
- #!/bin/sh
 - #-------------------------------------------------------------------------------------------------------------
 - #实际使用中,需注意以下两点
 - #1)直接在Linux/UNIX上面创建并编写shell脚本
 - # 这是因为Windows下编写的*.sh文档格式和编码,是Linux/UNIX所不能完全承认的
 - # 最直接的体现就是使用过程中会遇到很多似是而非的错误,这曾经搞疯了一大片人
 - #2)编写完*.sh之后,记得[chmod 755 *.sh],否则会提示无法执行or没有权限执行等等
 - #-------------------------------------------------------------------------------------------------------------
 - #JDK路径
 - #JAVA_HOME="/usr/java/jdk1.6.0_31"
 - #JVM启动参数
 - #-server:一定要作为第一个参数,在多个CPU时性能佳
 - #-Xloggc:记录GC日志,这里建议写成绝对路径,如此便可在任意目录下执行该shell脚本
 - #JAVA_OPTS="-ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"
 - JAVA_OPTS="-Duser.timezone=GMT+8 -server -Xms512m -Xmx512m -Xloggc:/app/code/CucPayTradePortalLog/gc.log"
 - #Java程序日志所在的目录
 - APP_LOG=/app/code/CucPayTradePortalLog
 - #Java程序主体所在的目录,即classes的上一级目录
 - APP_HOME=/app/code/CucPayTradePortal
 - #Java主程序,即main(String[] args)方法类
 - APP_MAIN=com.cucpay.tradeportal.MainApp
 - #classpath参数,包括指定lib目录下的所有jar
 - CLASSPATH=$APP_HOME/classes
 - for tradePortalJar in "$APP_HOME"/lib/*.jar
 - do
 - CLASSPATH="$CLASSPATH":"$tradePortalJar"
 - done
 - #-------------------------------------------------------------------------------------------------------------
 - #getTradeProtalPID()-->获取Java应用的PID
 - #说明:通过JDK自带的JPS命令及grep命令,准确查找Java应用的PID
 - #其中:[jps -l]表示显示Java主程序的完整包路径
 - # awk命令可以分割出PID($1部分)及Java主程序名称($2部分)
 - #例子:[$JAVA_HOME/bin/jps -l | grep $APP_MAIN]-->>[5775 com.cucpay.tradeportal.MainApp]
 - #另外:用这个命令也可以直接取到程序的PID-->>[ps aux|grep java|grep $APP_MAIN|grep -v grep|awk '{print $2}']
 - #-------------------------------------------------------------------------------------------------------------
 - #初始化全局变量tradePortalPID,用于标识交易前置系统的PID,0表示未启动
 - tradePortalPID=0
 - getTradeProtalPID(){
 - javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`
 - if [ -n "$javaps" ]; then
 - tradePortalPID=`echo $javaps | awk '{print $1}'`
 - else
 - tradePortalPID=0
 - fi
 - }
 - #-------------------------------------------------------------------------------------------------------------
 - #startup()-->启动Java应用程序
 - #步骤:1)调用getTradeProtalPID()函数,刷新$tradePortalPID全局变量
 - # 2)若程序已经启动($tradePortalPID不等于0),则提示程序已启动
 - # 3)若程序未被启动,则执行启动命令
 - # 4)启动命令执行后,再次调用getTradeProtalPID()函数
 - # 5)若步骤4执行后,程序的PID不等于0,则打印[Success],否则打印[Failed]
 - #注意:[echo -n]表示打印字符后,不换行
 - #注意:[nohup command > /path/nohup.log &]是将作业输出到nohup.log,否则它会输出到该脚本目录下的nohup.out中
 - #-------------------------------------------------------------------------------------------------------------
 - startup(){
 - getTradeProtalPID
 - echo "======================================================================================"
 - if [ $tradePortalPID -ne 0 ]; then
 - echo "$APP_MAIN already started(PID=$tradePortalPID)"
 - echo "======================================================================================"
 - else
 - echo -n "Starting $APP_MAIN"
 - nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAIN > $APP_LOG/nohup.log &
 - getTradeProtalPID
 - if [ $tradePortalPID -ne 0 ]; then
 - echo "(PID=$tradePortalPID)...[Success]"
 - echo "======================================================================================"
 - else
 - echo "[Failed]"
 - echo "======================================================================================"
 - fi
 - fi
 - }
 - #-------------------------------------------------------------------------------------------------------------
 - #shutdown()-->停止Java应用程序
 - #步骤:1)调用getTradeProtalPID()函数,刷新$tradePortalPID全局变量
 - # 2)若程序已经启动($tradePortalPID不等于0),则开始执行停止程序操作,否则提示程序未运行
 - # 3)使用[kill -9 PID]命令强制杀掉进程
 - # 4)使用[$?]获取上一句命令的返回值,若其为0,表示程序已停止运行,则打印[Success],反之则打印[Failed]
 - # 5)为防止Java程序被启动多次,这里增加了反复检查程序进程的功能,通过递归调用shutdown()函数的方式,反复kill
 - #注意:Shell编程中,[$?]表示上一句命令或者上一个函数的返回值
 - #-------------------------------------------------------------------------------------------------------------
 - shutdown(){
 - getTradeProtalPID
 - echo "======================================================================================"
 - if [ $tradePortalPID -ne 0 ]; then
 - echo -n "Stopping $APP_MAIN(PID=$tradePortalPID)..."
 - kill -9 $tradePortalPID
 - if [ $? -eq 0 ]; then
 - echo "[Success]"
 - echo "======================================================================================"
 - else
 - echo "[Failed]"
 - echo "======================================================================================"
 - fi
 - getTradeProtalPID
 - if [ $tradePortalPID -ne 0 ]; then
 - shutdown
 - fi
 - else
 - echo "$APP_MAIN is not running"
 - echo "======================================================================================"
 - fi
 - }
 - #-------------------------------------------------------------------------------------------------------------
 - #getServerStatus()-->检查程序运行状态
 - #-------------------------------------------------------------------------------------------------------------
 - getServerStatus(){
 - getTradeProtalPID
 - echo "======================================================================================"
 - if [ $tradePortalPID -ne 0 ]; then
 - echo "$APP_MAIN is running(PID=$tradePortalPID)"
 - echo "======================================================================================"
 - else
 - echo "$APP_MAIN is not running"
 - echo "======================================================================================"
 - fi
 - }
 
下面是我整理的用于启动Java应用程序的startup.sh(可单独使用)
- #!/bin/sh
 - #-------------------------------------------------------------------------------------------------------------
 - #该脚本的使用方式为-->[sh startup.sh]
 - #该脚本可在服务器上的任意目录下执行,不会影响到日志的输出位置等
 - #-------------------------------------------------------------------------------------------------------------
 - #JAVA_HOME="/usr/java/jdk1.6.0_31"
 - JAVA_OPTS="-Duser.timezone=GMT+8 -server -Xms2048m -Xmx2048m -Xloggc:/app/code/CucPayTradePortalLog/gc.log"
 - APP_LOG=/app/code/CucPayTradePortalLog
 - APP_HOME=/app/code/CucPayTradePortal
 - APP_MAIN=com.cucpay.tradeportal.MainApp
 - CLASSPATH=$APP_HOME/classes
 - for tradePortalJar in "$APP_HOME"/lib/*.jar;
 - do
 - CLASSPATH="$CLASSPATH":"$tradePortalJar"
 - done
 - tradePortalPID=0
 - getTradeProtalPID(){
 - javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`
 - if [ -n "$javaps" ]; then
 - tradePortalPID=`echo $javaps | awk '{print $1}'`
 - else
 - tradePortalPID=0
 - fi
 - }
 - startup(){
 - getTradeProtalPID
 - echo "================================================================================================================"
 - if [ $tradePortalPID -ne 0 ]; then
 - echo "$APP_MAIN already started(PID=$tradePortalPID)"
 - echo "================================================================================================================"
 - else
 - echo -n "Starting $APP_MAIN"
 - nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAIN > $APP_LOG/nohup.log &
 - getTradeProtalPID
 - if [ $tradePortalPID -ne 0 ]; then
 - echo "(PID=$tradePortalPID)...[Success]"
 - echo "================================================================================================================"
 - else
 - echo "[Failed]"
 - echo "================================================================================================================"
 - fi
 - fi
 - }
 - startup
 
下面是我整理的用于停止Java应用程序的shutdown.sh(可单独使用)
- #!/bin/sh
 - APP_MAIN=com.cucpay.tradeportal.MainApp
 - tradePortalPID=0
 - getTradeProtalPID(){
 - javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`
 - if [ -n "$javaps" ]; then
 - tradePortalPID=`echo $javaps | awk '{print $1}'`
 - else
 - tradePortalPID=0
 - fi
 - }
 - shutdown(){
 - getTradeProtalPID
 - echo "================================================================================================================"
 - if [ $tradePortalPID -ne 0 ]; then
 - echo -n "Stopping $APP_MAIN(PID=$tradePortalPID)..."
 - kill -9 $tradePortalPID
 - if [ $? -eq 0 ]; then
 - echo "[Success]"
 - echo "================================================================================================================"
 - else
 - echo "[Failed]"
 - echo "================================================================================================================"
 - fi
 - getTradeProtalPID
 - if [ $tradePortalPID -ne 0 ]; then
 - shutdown
 - fi
 - else
 - echo "$APP_MAIN is not running"
 - echo "================================================================================================================"
 - fi
 - }
 - shutdown
 
最后是我整理的用于查看Java应用程序运行状态的serverStatus.sh(可单独使用)
- #!/bin/sh
 - APP_MAIN=com.cucpay.tradeportal.MainApp
 - tradePortalPID=0
 - getTradeProtalPID(){
 - javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN`
 - if [ -n "$javaps" ]; then
 - tradePortalPID=`echo $javaps | awk '{print $1}'`
 - else
 - tradePortalPID=0
 - fi
 - }
 - getServerStatus(){
 - getTradeProtalPID
 - echo "================================================================================================================"
 - if [ $tradePortalPID -ne 0 ]; then
 - echo "$APP_MAIN is running(PID=$tradePortalPID)"
 - echo "================================================================================================================"
 - else
 - echo "$APP_MAIN is not running"
 - echo "================================================================================================================"
 - fi
 - }
 - getServerStatus
 
Linux下启动和停止Java应用程序的Shell脚本的更多相关文章
- linux下启动和终止JAVA程序shell脚本
		
1.启动脚本start.sh #run application backgroud nohup java -jar chess-admin->& & #record the pr ...
 - linux下启动、停止tomcat,杀死tomcat进程
		
1.打开终端 cd /java/tomcat 2.执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina ...
 - Linux下启动、停止xampp命令
		
启动xampp: /opt/lampp/./lampp start 停止xampp: /opt/lampp/./lampp stop 卸载xampp: rm -rf /opt/lampp
 - Linux下启动tomcat报java.lang.OutOfMemoryError: PermGen space
		
一.错误信息 java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke ...
 - 在linux下sh批处理文件调用java的方法
		
解密 java -classpath collection-impl-0.0.1.jar com.ai.toptea.collection.message.DESEncrypt 1EFE4663895 ...
 - 在Linux下启动Java服务的脚本
		
#!/bin/sh #该脚本为Linux下启动java程序的通用脚本.即可以作为开机自启动service脚本被调用, #也可以作为启动java程序的独立脚本来使用. # #Author: tudaxi ...
 - 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
		
如何用javac 和java 编译运行整个Java工程 (转载) http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...
 - linux 下启动java jar包 shell
		
linux 下启动java jar包 shell #!/bin/sh JAVA_HOME=/usr/local/jdk1.6.0_34/bin/javaJAVA_OPTS="-Xmx256m ...
 - Linux下启动Oracle服务和监听程序步骤
		
Linux下启动Oracle服务和监听程序启动和关闭步骤整理如下: 1.安装oracle: 2.创建oracle系统用户: 3./home/oracle下面的.bash_profile添加几个环境变量 ...
 
随机推荐
- python内建方法
			
abs all any apply basestring bin bool buffer bytearray bytes callable chr classmethod cmp coerce com ...
 - python--数据持久化
			
python中与数据持久化有关的模块有很多,像pickle.json之类的就不介绍了,这里介绍两个其他的模块:dbm和shelve 1.dbm ''' 在一些小型程序中,不需要关系型数据库时,可以方便 ...
 - HDU 3480 Division(斜率DP裸题)
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3480 题目大意:将n个数字分成m段,每段价值为(该段最大值-该段最小值)^2,求最小的总价值. 解题思 ...
 - UVA - 796
			
UVA- 796 /** 题意:给出一个图,然后看此图的存在的桥,并且输出是哪一个, 做法:Tarjan(不存在重边) **/ #include<iostream> #include< ...
 - Linux 基础——处理文件与目录的命令
			
继续第三天学习,每天下班后积累一点点,始终相信厚积薄发. 一.处理文件的命令 touch dest_file:在当前目录下创建指定的文件. cp source dest:将指定的猿文件复制到目标文件, ...
 - centos7 安装rlwrap
			
https://blog.csdn.net/zhjmozhi/article/details/78347216
 - 我的第一个web开发框架
			
怎么才能成为一名架构师?需要具备哪些条件? 作为一名码农我迫切希望自己成为一个比较合格的web架构师,昨晚心血来潮小弟花了4个小时的时间整了个简易的web开发框架,本着开源的精神做个分享,希望和更多的 ...
 - Java 中List 集合索引遍历与迭代器遍历
			
package yzhou.iterator; import java.util.ArrayList; import java.util.HashSet; import java.util.Itera ...
 - Thinkphp命名规范
			
1.类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如 DbMysql.class.php: 2.类 ...
 - 循序渐进PYTHON3(十三) --6--  COOKIE和SESSION
			
1. 由于HTTP协议是无状态的协议(发送一次请求即断开),所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session. 典型的场景比如购物车,当 ...