springBoot使用sh指令碼啟動服務
阿新 • • 發佈:2020-10-28
在當前目錄中 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 停止