ホームページ Java &#&チュートリアル LinuxシェルスクリプトでJavaメインメソッドを呼び出すにはどうすればよいですか?

LinuxシェルスクリプトでJavaメインメソッドを呼び出すにはどうすればよいですか?

Jun 13, 2020 am 10:14 AM
java シェルスクリプト

LinuxシェルスクリプトでJavaメインメソッドを呼び出すにはどうすればよいですか?

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

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

#!/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视频教程

以上がLinuxシェルスクリプトでJavaメインメソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Spring Tool Suiteで最初のSpring Bootアプリケーションを実行するにはどうすればよいですか? Feb 07, 2025 pm 12:11 PM

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

See all articles