0

0

linux shell脚本如何调用java main方法?

coldplay.xixi

coldplay.xixi

发布时间:2020-06-13 10:14:06

|

6061人浏览过

|

来源于php中文网

原创

linux shell脚本如何调用java main方法?

linux shell脚本如何调用java main方法?

linux shell脚本调用java main方法解决方法:

Quinvio AI
Quinvio AI

AI辅助下快速创建视频,虚拟代言人

下载
#!/bin/sh  
    #  
    #该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,  
    #也可以作为启动java程序的独立脚本来使用。  
    #  
    #Author: tudaxia.com, Date: 2011/6/7  
    #  
    #警告!!!:该脚本stop部分使用系统kill命令来强制终止指定的java程序进程。  
    #在杀死进程前,未作任何条件检查。在某些情况下,如程序正在进行文件或数据库写操作,  
    #可能会造成数据丢失或数据不完整。如果必须要考虑到这类情况,则需要改写此脚本,  
    #增加在执行kill命令前的一系列检查。  
    #   
    ###################################  
    # 以下这些注释设置可以被chkconfig命令读取   
    # chkconfig: - 99 50   
    # description: Java程序启动脚本   
    # processname: test   
    # config: 如果需要的话,可以配置   
    ###################################   
    #  
    ###################################  
    #环境变量及程序执行参数  
    #需要根据实际环境以及Java程序名称来修改这些参数  
    ###################################  
    #JDK所在路径  
    JAVA_HOME="/usr/java/jdk1.8.0_102"
    #执行程序启动所使用的系统用户,考虑到安全,推荐不使用root帐号  
    #RUNNING_USER=portal  
    #Java程序所在的目录(classes的上一级目录)  
    APP_HOME=/opt/tmp/geecuser/geec_calculate    #需要启动的Java主程序(main方法类)  
    APP_MAINCLASS=com.ai.core.start.Main  
    #拼凑完整的classpath参数,包括指定lib目录下所有的jar  
    CLASSPATH=$APP_HOME/classes  
    for i in "$APP_HOME"/lib/*.jar; do  
       CLASSPATH="$CLASSPATH":"$i"  
    done      
    #java虚拟机启动参数  
    JAVA_OPTS="-ms1024m -mx1024m -Xmn512m -Djava.awt.headless=true -XX:MaxPermSize=256m"  
      
    ###################################  
    #(函数)判断程序是否已启动  
    #  
    #说明:  
    #使用JDK自带的JPS命令及grep命令组合,准确查找pid  
    #jps 加 l 参数,表示显示java的完整包路径  
    #使用awk,分割出pid ($1部分),及Java程序名称($2部分)  
    ###################################  
    #初始化psid变量(全局)  
    psid=0  
      
    checkpid() {  
       javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`  
      
       if [ -n "$javaps" ]; then  
          psid=`echo $javaps | awk '{print $1}'`  
       else  
          psid=0  
       fi  
    }  
      
    ###################################  
    #(函数)启动程序  
    #  
    #说明:  
    #1. 首先调用checkpid函数,刷新$psid全局变量  
    #2. 如果程序已经启动($psid不等于0),则提示程序已启动  
    #3. 如果程序没有被启动,则执行启动命令行  
    #4. 启动命令执行后,再次调用checkpid函数  
    #5. 如果步骤4的结果能够确认程序的pid,则打印[OK],否则打印[Failed]  
    #注意:echo -n 表示打印字符后,不换行  
    #注意: "nohup 某命令 >/dev/null 2>&1 &" 的用法  
    ###################################      start() {  
       checkpid  
      
       if [ $psid -ne 0 ]; then  
          echo "================================"  
          echo "warn: $APP_MAINCLASS already started! (pid=$psid)"  
          echo "================================"  
       else  
          echo -n "Starting $APP_MAINCLASS ..."  
          JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS >$APP_HOME/log/nohup 2>&1 &"  
          eval $JAVA_CMD  
          checkpid  
          if [ $psid -ne 0 ]; then  
             echo "(pid=$psid) [OK]"  
          else  
             echo "[Failed]"  
          fi  
       fi  
    }  
      
    ###################################  
    #(函数)停止程序  
    #  
    #说明:  
    #1. 首先调用checkpid函数,刷新$psid全局变量  
    #2. 如果程序已经启动($psid不等于0),则开始执行停止,否则,提示程序未运行  
    #3. 使用kill -9 pid命令进行强制杀死进程  
    #4. 执行kill命令行紧接其后,马上查看上一句命令的返回值: $?  
    #5. 如果步骤4的结果$?等于0,则打印[OK],否则打印[Failed]  
    #6. 为了防止java程序被启动多次,这里增加反复检查进程,反复杀死的处理(递归调用stop)。  
    #注意:echo -n 表示打印字符后,不换行  
    #注意: 在shell编程中,"$?" 表示上一句命令或者一个函数的返回值  
    ###################################      stop() {  
       checkpid  
      
       if [ $psid -ne 0 ]; then  
          echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "  
          kill -9 $psid          if [ $? -eq 0 ]; then  
             echo "[OK]"  
          else  
             echo "[Failed]"  
          fi  
      
          checkpid  
          if [ $psid -ne 0 ]; then  
             stop  
          fi  
       else  
          echo "================================"  
          echo "warn: $APP_MAINCLASS is not running"  
          echo "================================"  
       fi  
    }  
      
    ###################################  
    #(函数)检查程序运行状态  
    #  
    #说明:  
    #1. 首先调用checkpid函数,刷新$psid全局变量  
    #2. 如果程序已经启动($psid不等于0),则提示正在运行并表示出pid  
    #3. 否则,提示程序未运行  
    ###################################      status() {  
       checkpid  
      
       if [ $psid -ne 0 ];  then  
          echo "$APP_MAINCLASS is running! (pid=$psid)"  
       else  
          echo "$APP_MAINCLASS is not running"  
       fi  
    }  
      
    ###################################  
    #(函数)打印系统环境参数  
    ###################################      info() {  
       echo "System Information:"  
       echo "****************************"  
       echo `head -n 1 /etc/issue`  
       echo `uname -a`  
       echo  
       echo "JAVA_HOME=$JAVA_HOME"  
       echo `$JAVA_HOME/bin/java -version`  
       echo  
       echo "APP_HOME=$APP_HOME"  
       echo "APP_MAINCLASS=$APP_MAINCLASS"  
       echo "****************************"  
    }  
      
    ###################################  
    #读取脚本的第一个参数($1),进行判断  
    #参数取值范围:{start|stop|restart|status|info}  
    #如参数不在指定范围之内,则打印帮助信息  
    ###################################  
    case "$1" in  
       'start')  
          start  
          ;;  
       'stop')  
         stop  
         ;;  
       'restart')  
         stop  
         start  
         ;;  
       'status')  
         status  
         ;;  
       'info')  
         info  
         ;;  
      *)  
         echo "Usage: $0 {start|stop|restart|status|info}"  
         exit 1  
    esac  
    exit 0

推荐教程:《JAVA视频教程

相关专题

更多
菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

0

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

56

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

51

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

397

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

118

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

11

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ASP 教程
ASP 教程

共34课时 | 3.9万人学习

PHP课程
PHP课程

共137课时 | 9.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号