最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell重啟SpringBoot項(xiàng)目腳本的示例代碼(含服務(wù)守護(hù))

 更新時(shí)間:2023年11月24日 09:10:52   作者:小子寶丁  
本文介紹了如何使用?Bash?腳本來管理和守護(hù)運(yùn)行服務(wù),將展示一個(gè)示例腳本,該腳本可以停止、啟動和守護(hù)運(yùn)行一個(gè)服務(wù),并提供了相應(yīng)的解釋和用法說明,文章通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下

引用

在實(shí)際的軟件開發(fā)和部署過程中,經(jīng)常需要使用腳本來管理和控制服務(wù)的運(yùn)行。這些腳本可以方便地停止、啟動和監(jiān)控服務(wù),并在服務(wù)意外停止時(shí)自動重新啟動。在本文中,將展示一個(gè)使用 Bash 腳本來管理和守護(hù)運(yùn)行服務(wù)的示例。

步驟

首先,看一下示例腳本的結(jié)構(gòu)和關(guān)鍵部分。以下是示例腳本的完整代碼:

#!/bin/bash

JAR=your_service.jar
LOG_FILE=your_service_log_file.log

SERVER_HOST=localhost
SERVER_PORT=9998

# 停止服務(wù)
function stopServer(){

    # 檢查進(jìn)程是否正在運(yùn)行
    pid=$(ps -ef | grep "$JAR" | grep -v grep| awk '{print $2}')
    if [ -n "$pid" ]; then
        # 殺死進(jìn)程
        kill -9 $pid
        echo "服務(wù)已停止"
    else
        echo "服務(wù)未運(yùn)行"
    fi
}

# 啟動服務(wù)
function startServer(){
    # 啟動服務(wù)
    nohup java -jar "$JAR" > "$LOG_FILE" 2>&1 &
    echo "服務(wù)正在啟動……"

    # 檢測服務(wù)是否啟動
    sleep 10
    while ! nc -z "$SERVER_HOST" "$SERVER_PORT"; do sleep 2; done
    echo "服務(wù)啟動成功"
    sleep 3

}


# 守護(hù)
function daemonFun(){
    # 進(jìn)入循環(huán),定期檢查服務(wù)狀態(tài)
    while true; do
        # 檢查進(jìn)程是否正在運(yùn)行
        pid=$(ps -ef | grep "$JAR" | grep -v grep| awk '{print $2}')
        if [ -n "$pid" ]; then
            # 服務(wù)正在運(yùn)行,等待一段時(shí)間后再次檢查
            echo "服務(wù)正在運(yùn)行,等待一段時(shí)間后再次檢查"
            sleep 60
        else
            # 服務(wù)已停止,啟動服務(wù)
            startServer wait
            echo "服務(wù)已重新啟動"
        fi
    done
}


stopServer wait

sleep 3

startServer wait



# 啟動守護(hù)
echo "啟動守護(hù)"
daemonFun  &

以下逐步解釋腳本的不同部分。

  • 首先,定義了一些變量,例如 JAR 表示服務(wù)的 JAR 文件名,LOG_FILE 表示日志文件名,SERVER_HOST 和 SERVER_PORT 表示服務(wù)的主機(jī)和端口。

  • 接下來,定義了 stopServer 函數(shù),用于停止服務(wù)。該函數(shù)會檢查服務(wù)進(jìn)程是否正在運(yùn)行,如果是,則使用進(jìn)程 ID 殺死該進(jìn)程。

  • 然后,定義了 startServer 函數(shù),用于啟動服務(wù)。該函數(shù)會使用 nohup 命令在后臺運(yùn)行服務(wù),并將輸出重定向到日志文件。然后,它會等待一段時(shí)間,檢測服務(wù)是否成功啟動。

  • 接著,定義了 daemonFun 函數(shù),用于守護(hù)運(yùn)行服務(wù)。該函數(shù)會進(jìn)入一個(gè)無限循環(huán),定期檢查服務(wù)的狀態(tài)。如果服務(wù)進(jìn)程不存在,則重新啟動服務(wù)。

在主程序中,首先調(diào)用 stopServer 函數(shù)停止可能正在運(yùn)行的服務(wù),并等待一段時(shí)間。接下來,調(diào)用 startServer 函數(shù)啟動服務(wù),并再次等待一段時(shí)間。
最后,打印一條消息表示守護(hù)進(jìn)程正在啟動,并調(diào)用 daemonFun 函數(shù)在后臺運(yùn)行守護(hù)進(jìn)程。

總結(jié)

以上腳本可以方便地停止、啟動和守護(hù)運(yùn)行一個(gè)服務(wù)。你可以根據(jù)自己的實(shí)際需求修改腳本中的變量和函數(shù),以適應(yīng)特定的服務(wù)和環(huán)境。

以上就是Shell重啟SpringBoot項(xiàng)目腳本的示例代碼(含服務(wù)守護(hù))的詳細(xì)內(nèi)容,更多關(guān)于Shell重啟SpringBoot項(xiàng)目腳本的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring?AOP實(shí)現(xiàn)用戶登錄統(tǒng)一驗(yàn)證功能

    Spring?AOP實(shí)現(xiàn)用戶登錄統(tǒng)一驗(yàn)證功能

    這篇文章主要為大家詳細(xì)介紹了Spring?AOP如何實(shí)現(xiàn)用戶登錄統(tǒng)一驗(yàn)證功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-01-01
  • java編程實(shí)現(xiàn)國際象棋棋盤

    java編程實(shí)現(xiàn)國際象棋棋盤

    這篇文章主要為大家詳細(xì)介紹了java編程實(shí)現(xiàn)國際象棋棋盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Java如何實(shí)現(xiàn)生成報(bào)表并將其導(dǎo)出為Excel

    Java如何實(shí)現(xiàn)生成報(bào)表并將其導(dǎo)出為Excel

    在許多企業(yè)應(yīng)用中,生成報(bào)表并將其導(dǎo)出到Excel表格是一項(xiàng)常見需求,這篇文章主要為大家介紹了Java如何實(shí)現(xiàn)生成報(bào)表并將其導(dǎo)出為Excel,需要的可以參考下
    2025-02-02
  • Java的幾個(gè)重要版本_動力節(jié)點(diǎn)Java學(xué)院整理

    Java的幾個(gè)重要版本_動力節(jié)點(diǎn)Java學(xué)院整理

    jdk8 將在2014年3月份發(fā)布,迄今為止,可能是最大更新的java版本,也是令人期待的一個(gè)版本,在Java中引入閉包概念對Java程序開發(fā)方法的影響甚至?xí)笥贘ava5中引入的泛型特征對編程方式帶來的影響
    2017-06-06
  • Java8深入學(xué)習(xí)系列(一)lambda表達(dá)式介紹

    Java8深入學(xué)習(xí)系列(一)lambda表達(dá)式介紹

    Java8最值得學(xué)習(xí)的特性就是Lambda表達(dá)式和Stream API,所以我們學(xué)習(xí)java8的第一課就是學(xué)習(xí)lambda表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于Java8學(xué)習(xí)之lambda的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • 深入了解Java中的反射機(jī)制(reflect)

    深入了解Java中的反射機(jī)制(reflect)

    Java的反射機(jī)制允許我們對一個(gè)類的加載、實(shí)例化、調(diào)用方法、操作屬性的時(shí)期改為在運(yùn)行期進(jìn)行,這大大提高了代碼的靈活度,本文就來簡單講講反射機(jī)制的具體使用方法吧
    2023-05-05
  • 淺談Java ThreadPoolExecutor的使用

    淺談Java ThreadPoolExecutor的使用

    今天我們來學(xué)習(xí)一下Java ThreadPoolExecutor的使用,文中有非常詳細(xì)的介紹及代碼示例,對正在學(xué)習(xí)Java的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-05-05
  • 編寫android撥打電話apk應(yīng)用實(shí)例代碼

    編寫android撥打電話apk應(yīng)用實(shí)例代碼

    這篇文章主要介紹了編寫android撥打電話apk應(yīng)用實(shí)例代碼,十分的實(shí)用,這里分享給大家,有需要的小伙伴可以參考下
    2015-04-04
  • 聊聊@RequestBody和Json之間的關(guān)系

    聊聊@RequestBody和Json之間的關(guān)系

    這篇文章主要介紹了@RequestBody和Json之間的關(guān)系,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java解析任意層數(shù)json字符串的方法

    java解析任意層數(shù)json字符串的方法

    一個(gè)方法解析任意層數(shù)的json字符竄:使用正則表達(dá)式,遞歸算法,將jsonArray解析出后添加到List, JsonObject添加至Map
    2014-02-02

最新評論

手游| 子洲县| 高清| 武穴市| 广州市| 定州市| 巴南区| 青州市| 丹东市| 泰来县| 望江县| 和平县| 临海市| 伊吾县| 萨嘎县| 马公市| 江陵县| 天祝| 磴口县| 南陵县| 石嘴山市| 潜江市| 兴安县| 措美县| 岐山县| 高青县| 运城市| 五指山市| 萝北县| 曲阜市| 乐都县| 聂拉木县| 仙桃市| 阆中市| 武强县| 尚义县| 淮安市| 卓资县| 巨鹿县| 玉溪市| 尼勒克县|