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添加几个环境变量 ...
随机推荐
- js中常用的数组方法
在数组的尾部增加或删除某个元素:push() 和 pop() push() : 在数组的尾部追加一个或多个元素,并返回数组的长度 pop():在数组的尾部删除一个元素,并返回被删除项 var arr ...
- experss 做小型服务器出现跨域问题
情况是这样的 我用express做一个小型的服务器来做我demo项目的一个接口 然后我就出现了跨域问题 然后我就 app.all('/*', function(req, res, next) { // ...
- hdu 3435(KM算法最优匹配)
A new Graph Game Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Restore IP Addresses——边界条件判定
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- Divide Two Integers——二分法的经典变形
Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...
- C++编译常见错误
error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To di ...
- google code-prettify 代码高亮插件使用方法
找代码高亮插件选了好久,还是这个使用起来比较方便. 先上链接:插件下载地址 官方使用方法地址 建议看官方的资料,我这里仅仅简要描述一下使用方法: 引入方法: 测试引入是否成功:herf 换成 自己放置 ...
- SEO:查找网站的百度收录情况和如何让百度快速收录
查询收录的工具地址: http://tool.chinaz.com/baidu/entry/ 如何让百度快速收录: 一.大家都熟知的百度网站提交,只需要提交网站的首页即可.以前做完这一步就被百度收录的 ...
- 微信小程序-二维码汇总
小程序二维码在生活中的应用场景很多,比如营销类一物一码,扫码开门,扫码付款等...小程序二维码分两种? 1.普通链接二维码 即跟普通的网站链接生成的二维码是一个意思,这种二维码的局限性如下: 对于普通 ...
- Python基础系列----字典、基本语句
1.定义 映 ...