亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

引用

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

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

    # 檢測(cè)服務(wù)是否啟動(dòng)
    sleep 10
    while ! nc -z "$SERVER_HOST" "$SERVER_PORT"; do sleep 2; done
    echo "服務(wù)啟動(dòng)成功"
    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ù)已停止,啟動(dòng)服務(wù)
            startServer wait
            echo "服務(wù)已重新啟動(dòng)"
        fi
    done
}


stopServer wait

sleep 3

startServer wait



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

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

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

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

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

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

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

總結(jié)

以上腳本可以方便地停止、啟動(dòng)和守護(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)目腳本的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中怎樣處理空指針異常

    Java中怎樣處理空指針異常

    程序中的變量是?null,就意味著它沒有引用指向或者說沒有指針。這時(shí),我們對(duì)這個(gè)變量進(jìn)行任何操作,都必然會(huì)引發(fā)空指針異常,本文主要介紹了Java中怎樣處理空指針異常,感興趣的可以了解一下
    2022-05-05
  • SpringBoot3.3中實(shí)現(xiàn)多端口監(jiān)聽的示例代碼

    SpringBoot3.3中實(shí)現(xiàn)多端口監(jiān)聽的示例代碼

    在SpringBoot應(yīng)用中實(shí)現(xiàn)多端口監(jiān)聽,可以讓一個(gè)應(yīng)用處理不同類型的HTTP請(qǐng)求或暴露多個(gè)服務(wù)接口,本文詳細(xì)講解了通過配置application.yml文件和編寫自定義配置類的方法,實(shí)現(xiàn)了對(duì)多個(gè)端口的監(jiān)聽,感興趣的可以了解一下
    2024-11-11
  • 解決MyBatis返回結(jié)果類型為Boolean的問題

    解決MyBatis返回結(jié)果類型為Boolean的問題

    這篇文章主要介紹了解決MyBatis返回結(jié)果類型為Boolean的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • springboot項(xiàng)目中添加自定義日志及配置過程

    springboot項(xiàng)目中添加自定義日志及配置過程

    這篇文章主要介紹了springboot項(xiàng)目中添加自定義日志,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • SpringBoot集成minio實(shí)現(xiàn)文件上傳和刪除功能

    SpringBoot集成minio實(shí)現(xiàn)文件上傳和刪除功能

    這篇文章主要介紹了SpringBoot集成minio實(shí)現(xiàn)文件上傳和刪除功能,詳細(xì)介紹每個(gè)功能的實(shí)現(xiàn)步驟和代碼示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • SpringBoot實(shí)現(xiàn)支付寶沙箱支付的完整步驟

    SpringBoot實(shí)現(xiàn)支付寶沙箱支付的完整步驟

    沙箱支付是一種用于模擬真實(shí)支付環(huán)境的測(cè)試工具,它提供了一個(gè)安全的測(cè)試環(huán)境,供開發(fā)者在不影響真實(shí)交易的情況下進(jìn)行支付功能的開發(fā)和測(cè)試,這篇文章給大家介紹了SpringBoot實(shí)現(xiàn)支付寶沙箱支付的完整步驟,需要的朋友可以參考下
    2024-04-04
  • 詳細(xì)分析java線程wait和notify

    詳細(xì)分析java線程wait和notify

    本篇文章是對(duì)java多線程wait()和notify()進(jìn)行了詳細(xì)的分析介紹,需要了解的朋友參考下
    2015-07-07
  • MybatisPlus條件查詢的具體使用

    MybatisPlus條件查詢的具體使用

    MybatisPlus通過條件構(gòu)造器可以組裝復(fù)雜的查詢條件,本文主要介紹了MybatisPlus條件查詢的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 簡(jiǎn)單了解JAVA中類、實(shí)例與Class對(duì)象

    簡(jiǎn)單了解JAVA中類、實(shí)例與Class對(duì)象

    這篇文章主要介紹了簡(jiǎn)單了解JAVA中類、實(shí)例與Class對(duì)象,類是面向?qū)ο缶幊陶Z言的一個(gè)重要概念,它是對(duì)一項(xiàng)事物的抽象概括,可以包含該事物的一些屬性定義,以及操作屬性的方法,需要的朋友可以參考下
    2019-06-06
  • 解決SpringCloud Gateway采用OpenFeign遠(yuǎn)程調(diào)用失敗的問題

    解決SpringCloud Gateway采用OpenFeign遠(yuǎn)程調(diào)用失敗的問題

    在使用SpringCloud網(wǎng)關(guān)進(jìn)行統(tǒng)一鑒權(quán)和認(rèn)證過程中,通過OpenFeign遠(yuǎn)程調(diào)用鑒權(quán)服務(wù)器接口時(shí)可能會(huì)遇到遠(yuǎn)程調(diào)用失敗的問題,這通常是因?yàn)镠ttpMessageConverters沒有被正確注入到Spring容器中
    2024-09-09

最新評(píng)論