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 停止


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM