1. 程式人生 > 實用技巧 >springBoot使用sh指令碼啟動服務

springBoot使用sh指令碼啟動服務

在當前目錄中 java -jar xxx.jar 這僅僅是前臺執行退出就失效

後臺執行:nohup java -jar xxx.jar > catalina.out 2>&1 &

命令詳解:

nohup:不掛斷地執行命令,退出帳戶之後繼續執行相應的程序。

nohup java -jar xxx.jar >日誌檔名.log:是nohup把command的輸出重定向到當前目錄的指定的“日誌檔名.log”檔案中,即輸出內容不列印到螢幕上,

而是輸出到”日誌檔名.log”檔案中。不指定檔名會在當前目錄建立nohup.out,如果當前目錄的 nohup.out 檔案不可寫,

輸出重定向到 $HOME/nohup.out 檔案中。如果沒有檔案能建立或開啟以用於追加,那麼 Command 引數指定的命令不可呼叫。

2>&1:2就是標準錯誤,1是標準輸出,該命令相當於把標準錯誤重定向到標準輸出麼。這裡&相當於標準錯誤等效於標準輸出,

即把標準錯誤和標準輸出同時輸出到指定的“日誌檔名.log”檔案中。

java -jar 自己的springboot專案.jar:執行springboot的專案,如果單單隻執行該命令,linux只會短暫的執行該專案,當退出控制檯後會自動關閉該專案。

最後的&:讓該作業在後臺執行。

當我們需要停止執行的時候 每次都要通過 jps命令查詢當前服務程序號

這樣一次兩次還能接受 頻繁的話,就不太友好了

自定義指令碼檔案wss.sh

#!/bin/bash
#這裡可替換為你自己的執行程式,其他程式碼無需更改
APP_NAME=xxx.jar #你的jar包

#使用說明,用來提示輸入引數
usage() {
echo "Usage: sh wss.sh [start|stop|restart|status]"
exit 1
}

#檢查程式是否在執行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}

#啟動方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
nohup java -jar $APP_NAME > catalina.out  2>
&1 & echo "${APP_NAME} start success" fi } #停止方法 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pid else echo "${APP_NAME} is not running" fi } #輸出執行狀態 status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is NOT running." fi } #重啟 restart(){ stop start } #根據輸入引數,選擇執行對應方法,不輸入則執行使用說明 case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) usage ;; esac

進入到目錄使用 sh wss.sh start 啟動

sh wss.sh stop 停止