溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用linux的shell腳本調(diào)用java main方法

發(fā)布時間:2020-06-15 15:54:42 來源:億速云 閱讀:457 作者:元一 欄目:編程語言

Shell是什么:

實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令并且把它們送到內(nèi)核。不僅如此,Shell有自己的編程語言用于對命令的編輯,它允許用戶編寫由shell命令組成的程序。Shell編程語言具有普通編程語言的很多特點,比如它也有循環(huán)結(jié)構(gòu)和分支控制結(jié)構(gòu)等,用這種編程語言編寫的Shell程序與其他應(yīng)用程序具有同樣的效果。

Linux提供了像MicrosoftWindows那樣的可視的命令輸入界面--X Window的圖形用戶界面(GUI)。它提供了很多桌面環(huán)境系統(tǒng),其操作就像Windows一樣,有窗口、圖標(biāo)和菜單,所有的管理都是通過鼠標(biāo)控制。GNOME。

每個Linux系統(tǒng)的用戶可以擁有他自己的用戶界面或Shell,用以滿足他們自己專門的Shell需要。

linux shell腳本調(diào)用java main方法解決方法:

#!/bin/sh  
    #  
    #該腳本為Linux下啟動java程序的通用腳本。即可以作為開機自啟動service腳本被調(diào)用,  
    #也可以作為啟動java程序的獨立腳本來使用。  
    #  
    #Author: tudaxia.com, Date: 2011/6/7  
    #  
    #警告!!!:該腳本stop部分使用系統(tǒng)kill命令來強制終止指定的java程序進程。  
    #在殺死進程前,未作任何條件檢查。在某些情況下,如程序正在進行文件或數(shù)據(jù)庫寫操作,  
    #可能會造成數(shù)據(jù)丟失或數(shù)據(jù)不完整。如果必須要考慮到這類情況,則需要改寫此腳本,  
    #增加在執(zhí)行kill命令前的一系列檢查。  
    #   
    ###################################  
    # 以下這些注釋設(shè)置可以被chkconfig命令讀取   
    # chkconfig: - 99 50   
    # description: Java程序啟動腳本   
    # processname: test   
    # config: 如果需要的話,可以配置   
    ###################################   
    #  
    ###################################  
    #環(huán)境變量及程序執(zhí)行參數(shù)  
    #需要根據(jù)實際環(huán)境以及Java程序名稱來修改這些參數(shù)  
    ###################################  
    #JDK所在路徑  
    JAVA_HOME="/usr/java/jdk1.8.0_102"
    #執(zhí)行程序啟動所使用的系統(tǒng)用戶,考慮到安全,推薦不使用root帳號  
    #RUNNING_USER=portal  
    #Java程序所在的目錄(classes的上一級目錄)  
    APP_HOME=/opt/tmp/geecuser/geec_calculate    #需要啟動的Java主程序(main方法類)  
    APP_MAINCLASS=com.ai.core.start.Main  
    #拼湊完整的classpath參數(shù),包括指定lib目錄下所有的jar  
    CLASSPATH=$APP_HOME/classes  
    for i in "$APP_HOME"/lib/*.jar; do  
       CLASSPATH="$CLASSPATH":"$i"  
    done      
    #java虛擬機啟動參數(shù)  
    JAVA_OPTS="-ms1024m -mx1024m -Xmn512m -Djava.awt.headless=true -XX:MaxPermSize=256m"  
      
    ###################################  
    #(函數(shù))判斷程序是否已啟動  
    #  
    #說明:  
    #使用JDK自帶的JPS命令及grep命令組合,準(zhǔn)確查找pid  
    #jps 加 l 參數(shù),表示顯示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  
    }  
      
    ###################################  
    #(函數(shù))啟動程序  
    #  
    #說明:  
    #1. 首先調(diào)用checkpid函數(shù),刷新$psid全局變量  
    #2. 如果程序已經(jīng)啟動($psid不等于0),則提示程序已啟動  
    #3. 如果程序沒有被啟動,則執(zhí)行啟動命令行  
    #4. 啟動命令執(zhí)行后,再次調(diào)用checkpid函數(shù)  
    #5. 如果步驟4的結(jié)果能夠確認(rèn)程序的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  
    }  
      
    ###################################  
    #(函數(shù))停止程序  
    #  
    #說明:  
    #1. 首先調(diào)用checkpid函數(shù),刷新$psid全局變量  
    #2. 如果程序已經(jīng)啟動($psid不等于0),則開始執(zhí)行停止,否則,提示程序未運行  
    #3. 使用kill -9 pid命令進行強制殺死進程  
    #4. 執(zhí)行kill命令行緊接其后,馬上查看上一句命令的返回值: $?  
    #5. 如果步驟4的結(jié)果$?等于0,則打印[OK],否則打印[Failed]  
    #6. 為了防止java程序被啟動多次,這里增加反復(fù)檢查進程,反復(fù)殺死的處理(遞歸調(diào)用stop)。  
    #注意:echo -n 表示打印字符后,不換行  
    #注意: 在shell編程中,"$?" 表示上一句命令或者一個函數(shù)的返回值  
    ###################################      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  
    }  
      
    ###################################  
    #(函數(shù))檢查程序運行狀態(tài)  
    #  
    #說明:  
    #1. 首先調(diào)用checkpid函數(shù),刷新$psid全局變量  
    #2. 如果程序已經(jīng)啟動($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  
    }  
      
    ###################################  
    #(函數(shù))打印系統(tǒng)環(huán)境參數(shù)  
    ###################################      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 "****************************"  
    }  
      
    ###################################  
    #讀取腳本的第一個參數(shù)($1),進行判斷  
    #參數(shù)取值范圍:{start|stop|restart|status|info}  
    #如參數(shù)不在指定范圍之內(nèi),則打印幫助信息  
    ###################################  
    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

以上就是linux shell腳本如何調(diào)用java main方法?的詳細內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI