java的linux执行的shell

1#!/bin/sh   2#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,   3#也可以作为启动java程序的独立脚本来使用。   4#   5#   6#警告!!!:该脚本stop部分使用系统kill命令来强制终止指定的java程序进程。   7#在杀死进程前,未作任何条件检查。在某些情况下,如程序正在进行文件或数据库写操作,   8#可能会造成数据丢失或数据不完整。如果必须要考虑到这类情况,则需要改写此脚本,   9#增加在执行kill命令前的一系列检查。   10#   11#   12###################################   13#环境变量及程序执行参数   14#需要根据实际环境以及Java程序名称来修改这些参数   15###################################   16#JDK所在路径   17JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre"   18    19#执行程序启动所使用的系统用户,考虑到安全,推荐不使用root帐号   20RUNNING_USER=root   21    22#Java程序所在的目录(classes的上一级目录)   23APP_HOME=/opt/mapu/WEB-INF   24    25#需要启动的Java主程序(main方法类)   26APP_MAINCLASS=org.mapu.common.AesUtil 27    28#拼凑完整的classpath参数,包括指定lib目录下所有的jar   29CLASSPATH=$APP_HOME/classes   30for i in "$APP_HOME"/lib/*.jar; do   31   CLASSPATH="$CLASSPATH":"$i"   32done   33    34#java虚拟机启动参数   35JAVA_OPTS="-ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"   36    37###################################   38#(函数)判断程序是否已启动   39#   40#说明:   41#使用JDK自带的JPS命令及grep命令组合,准确查找pid   42#jps 加 l 参数,表示显示java的完整包路径   43#使用awk,分割出pid ($1部分),及Java程序名称($2部分)   44###################################   45#初始化psid变量(全局)   46psid=0   47    48checkpid() {   49   #javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`   50    51   #if [ -n "$javaps" ]; then   52      #psid=`echo $javaps | awk '{print $1}'`   53   #else   54      #psid=0   55   #fi   56   javaps=`ps -ef|grep APP_MAINCLASS|grep -v grep| awk '{print $2}'` 57   if [ -n "$javaps" ]; then   58      psid=`echo $javaps | awk '{print $1}'`   59   else   60      psid=0   61   fi   62}   63    64###################################   65#(函数)启动程序   66#   67#说明:   68#1. 首先调用checkpid函数,刷新$psid全局变量   69#2. 如果程序已经启动($psid不等于0),则提示程序已启动   70#3. 如果程序没有被启动,则执行启动命令行   71#4. 启动命令执行后,再次调用checkpid函数   72#5. 如果步骤4的结果能够确认程序的pid,则打印[OK],否则打印[Failed]   73#注意:echo -n 表示打印字符后,不换行   74#注意: "nohup 某命令 >/dev/null 2>&1 &" 的用法   75###################################   76start() {   77   checkpid   78    79   if [ $psid -ne 0 ]; then   80      echo "================================"   81      echo "warn: $APP_MAINCLASS already started! (pid=$psid)"   82      echo "================================"   83   else   84      echo -n "Starting $APP_MAINCLASS ..."   85      #JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS >/dev/null 2>&1 &"   86      JAVA_CMD="$JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS"   87      su - $RUNNING_USER -c "$JAVA_CMD"   88      checkpid   89      if [ $psid -ne 0 ]; then   90         echo "(pid=$psid) [OK]"   91      else   92         echo "[Failed]"   93      fi   94   fi   95}   96    97###################################   98#(函数)停止程序   99#   100#说明:   101#1. 首先调用checkpid函数,刷新$psid全局变量   102#2. 如果程序已经启动($psid不等于0),则开始执行停止,否则,提示程序未运行   103#3. 使用kill -9 pid命令进行强制杀死进程   104#4. 执行kill命令行紧接其后,马上查看上一句命令的返回值: $?   105#5. 如果步骤4的结果$?等于0,则打印[OK],否则打印[Failed]   106#6. 为了防止java程序被启动多次,这里增加反复检查进程,反复杀死的处理(递归调用stop)。   107#注意:echo -n 表示打印字符后,不换行   108#注意: 在shell编程中,"$?" 表示上一句命令或者一个函数的返回值   109###################################   110stop() {   111   checkpid   112    113   if [ $psid -ne 0 ]; then   114      echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "   115      su - $RUNNING_USER -c "kill -9 $psid"   116      if [ $? -eq 0 ]; then   117         echo "[OK]"   118      else   119         echo "[Failed]"   120      fi   121    122      checkpid   123      if [ $psid -ne 0 ]; then   124         stop   125      fi   126   else   127      echo "================================"   128      echo "warn: $APP_MAINCLASS is not running"   129      echo "================================"   130   fi   131}   132    133###################################   134#(函数)检查程序运行状态   135#   136#说明:   137#1. 首先调用checkpid函数,刷新$psid全局变量   138#2. 如果程序已经启动($psid不等于0),则提示正在运行并表示出pid   139#3. 否则,提示程序未运行   140###################################   141status() {   142   checkpid   143    144   if [ $psid -ne 0 ];  then   145      echo "$APP_MAINCLASS is running! (pid=$psid)"   146   else   147      echo "$APP_MAINCLASS is not running"   148   fi   149}   150    151###################################   152#(函数)打印系统环境参数   153###################################   154info() {   155   echo "System Information:"   156   echo "****************************"   157   echo `head -n 1 /etc/issue`   158   echo `uname -a`   159   echo   160   echo "JAVA_HOME=$JAVA_HOME"   161   echo `$JAVA_HOME/bin/java -version`   162   echo   163   echo "APP_HOME=$APP_HOME"   164   echo "APP_MAINCLASS=$APP_MAINCLASS"   165   echo "****************************"   166}   167    168###################################   169#读取脚本的第一个参数($1),进行判断   170#参数取值范围:{start|stop|restart|status|info}   171#如参数不在指定范围之内,则打印帮助信息   172###################################   173case "$1" in   174   'start')   175      start   176      ;;   177   'stop')   178     stop   179     ;;   180   'restart')   181     stop   182     start   183     ;;   184   'status')   185     status   186     ;;   187   'info')   188     info   189     ;;   190  *)   191echo "Usage: $0 {start|stop|restart|status|info}"   192exit 1   193esac    194exit 0
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )