linux 部署java程式,使其成為服務
阿新 • • 發佈:2018-12-18
一個小專案,linux環境下部署,記錄一下:
啟動指令碼comm_mq如下:
#! /bin/sh #chkconfig:345 61 61 #description:test2Run description #------------------------------------------------------------------- # 定義變數 #------------------------------------------------------------------- APP_NAME=xc_mq GREP_KEY="Diname="${APP_NAME} # -Xms512m 設定JVM堆的初始記憶體 # -Xmx1024m 設定JVM堆的最大記憶體 # -Dlog4j.properties #設定log4j日誌檔案引數,可給JAVA程式呼叫,呼叫格式是#System.getProperty("log4j.properties") #APP_OPTS="-Xrs -Xms512m -Xmx1024m -Dlog4j.properties=../conf/#log4j.properties" # 程式主類 APP_CLASS="com.tbyf.thread.LanuchServer" APP_CLASSPATH=${CLASSPATH} # 檢查xc_mq程序是否已經在執行,如果在執行則返回1,否則返回0 is_exist(){ # ps -ef : 查詢所有程序 # grep -w "${GREP_KEY}" : 從所有程序中查出名稱為xc_mq的程序,-w為精確查詢 # grep -v "grep" : 排除名稱為grep的程序 # awk '{print $2}' : 輸出第二個引數,也就是程序號 pid=`ps -ef | grep -w "${GREP_KEY}" | grep -v "grep" | awk '{print $2}'` # 判斷程序號是否為空 if [ -z "${pid}" ] then return 1 else return 0 fi } status(){ is_exist if [ $? -eq "0" ] then echo "${APP_NAME} is running. pid=${pid} ." else echo "${APP_NAME} is not running" fi } start(){ is_exist if [ $? -eq "0" ] then echo "${APP_NAME} is already running. pid=${pid} ." return 0 else echo "try to start ${APP_NAME} ... " # 呼叫nohup命令啟動xc_mq # 1>&- : 表示關閉標準輸出日誌到nohup.out # 2>${APP_LOG} : 表示輸出日誌到../logs/log.log # 最後的& : 表示退出帳戶/關閉終端時程式不退出 # nohup $JAVA_HOME/bin/java -${GREP_KEY} ${APP_OPTS} -#classpath #${APP_CLASSPATH} ${APP_CLASS} 1>&- 2>${APP_LOG} & nohup /home/xj/java/jdk1.8.0_171/bin/java -${GREP_KEY} -classpath ${APP_CLASSPATH} /home/xj/mq.jar ${APP_CLASS} 1>&- & # 程式的啟動需要一定的時間,這裡設定暫停時間(3秒),單位是秒 sleep 3 is_exist if [ $? -eq "0" ] then echo "${APP_NAME} is running now. pid=${pid}." return 0 else echo "failed to start ${APP_NAME}! see ${APP_LOG} for more details." return 1 fi fi } # 停止xc_mq程序 stop() { is_exist if [ $? -eq 0 ] then echo "try to stop ${APP_NAME} ..." # 呼叫kill命令殺掉程序 /usr/bin/kill -9 ${pid} if [ $? -ne 0 ] then echo "failed to stop ${APP_NAME}!" return 1 else echo "${APP_NAME} stopped." return 0 fi else echo "${APP_NAME} is not running!" return 1 fi } # 重啟xc_mq程序 restart(){ stop start } # 顯示幫助資訊 help() { echo "status show the status of ${APP_NAME} server." echo "start start the ${APP_NAME} server." echo "stop stop the ${APP_NAME} server." echo "restart restart the ${APP_NAME} server." } # 主函式 main() { case "$1" in status) status;; start) start;; stop) stop;; restart) restart;; *) echo "command param error ! see follow help "; help;; esac } main restart
給指令碼賦予執行許可權,chmod +x comm_mq
讓指令碼隨著機器啟動而啟動,chkconfig --add comm_mq //把服務或指令碼加入到chkconfig 管理之中
ps:以下三行程式碼是必須的:
#! /bin/sh
#chkconfig:345 61 61
#description:test2Run description