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

如何將java -jar啟動的服務(wù)設(shè)置為systemd服務(wù)管理方式

 更新時(shí)間:2025年01月03日 15:09:01   作者:學(xué)亮編程手記  
本文詳細(xì)介紹了如何將Java應(yīng)用程序配置為由systemd管理的服務(wù),包括創(chuàng)建和配置.service文件的步驟,以及如何啟動、停止和查看服務(wù)狀態(tài)

要將一個(gè)使用 java -jar 命令啟動的服務(wù)設(shè)置為由 systemd 進(jìn)行管理,你需要創(chuàng)建一個(gè) .service 文件并將其放置在 /etc/systemd/system/ 目錄下。

以下是創(chuàng)建和配置這樣一個(gè)服務(wù)文件的詳細(xì)步驟:

步驟 1: 準(zhǔn)備工作

確定Java環(huán)境

確保系統(tǒng)中已經(jīng)安裝了Java,并且知道Java的安裝路徑(如 /usr/lib/jvm/java-1.8.0-openjdk-amd64/usr/java/jdk1.8.0_211)??梢酝ㄟ^命令 which java 查找實(shí)際的可執(zhí)行文件路徑。

準(zhǔn)備JAR文件

確認(rèn)你的Java應(yīng)用程序的JAR文件路徑,例如 /opt/services/myapp/myapp.jar。確保該JAR文件具有適當(dāng)?shù)臋?quán)限,使得 systemd 用戶(通常為 root 或者 system 用戶組)能夠訪問。

步驟 2: 創(chuàng)建.service文件

使用文本編輯器(如 vi, nano, 或 gedit),創(chuàng)建一個(gè)名為 myapp.service 的文件,將其保存在 /etc/systemd/system/ 目錄下。

以下是一個(gè)基本的 .service 文件模板:

[Unit]
Description=My Java Application Service
After=network.target

[Service]
User=<非root用戶>  # 如果需要以非root用戶運(yùn)行,填寫用戶名;否則可以省略此行
Group=<用戶組>     # 如果需要指定用戶組,填寫用戶組名;否則可以省略此行

Restart=on-failure  # 當(dāng)服務(wù)崩潰時(shí)自動重啟
RestartSec=10s      # 重啟前等待10秒

Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64"
Environment="JAR_FILE=/opt/services/myapp/myapp.jar"

ExecStart=/usr/bin/java -jar $JAR_FILE
ExecStop=/bin/kill -SIGTERM $MAINPID

[Install]
WantedBy=multi-user.target

說明:

[Unit] 部分:

  • Description: 提供服務(wù)的簡短描述。
  • After: 指定服務(wù)應(yīng)在哪些服務(wù)之后啟動,這里設(shè)置為在網(wǎng)絡(luò)服務(wù) (network.target) 完成后啟動。

[Service] 部分:

  • UserGroup: 如果希望服務(wù)以非 root 用戶和用戶組運(yùn)行,指定相應(yīng)的用戶名和用戶組名。
  • RestartRestartSec: 設(shè)置當(dāng)服務(wù)崩潰時(shí)自動重啟策略,這里是 on-failure 表示失敗時(shí)重啟,RestartSec 指定了重啟前等待的時(shí)間。
  • Environment: 設(shè)置環(huán)境變量,這里指定了 JAVA_HOME(Java安裝路徑)和 JAR_FILE(應(yīng)用程序JAR文件路徑)。
  • ExecStart: 定義啟動服務(wù)的命令,使用 java -jar 命令啟動指定的JAR文件,通過 $JAR_FILE 引用之前定義的環(huán)境變量。
  • ExecStop: 定義停止服務(wù)的命令,這里使用 kill 命令發(fā)送 SIGTERM 信號給主進(jìn)程ID($MAINPID),以優(yōu)雅地關(guān)閉服務(wù)。

[Install] 部分:

  • WantedBy: 指定服務(wù)應(yīng)隨哪個(gè)目標(biāo)(target)啟動。
  • 這里設(shè)置為 multi-user.target,意味著在多用戶系統(tǒng)(非單用戶模式或圖形界面)啟動時(shí),該服務(wù)會被自動啟動。

步驟 3: 配置服務(wù)

更新服務(wù)配置

執(zhí)行以下命令,使 systemd 重新加載配置文件:

sudo systemctl daemon-reload

啟用服務(wù)

若要讓服務(wù)在系統(tǒng)啟動時(shí)自動運(yùn)行,執(zhí)行:

sudo systemctl enable myapp.service

啟動服務(wù)

立即啟動服務(wù):

sudo systemctl start myapp.service

檢查服務(wù)狀態(tài)

確認(rèn)服務(wù)是否正常運(yùn)行:

sudo systemctl status myapp.service

如果一切正常,你應(yīng)該能看到服務(wù)狀態(tài)為 active (running)。

附加說明

日志管理

默認(rèn)情況下,服務(wù)的標(biāo)準(zhǔn)輸出和錯誤輸出將被重定向到 systemd 的 journal。你可以使用 journalctl 命令查看服務(wù)的日志:

journalctl -u myapp.service

自定義啟動參數(shù)

如果你的Java應(yīng)用需要額外的啟動參數(shù),可以在 ExecStart 行中直接添加,例如:

ExecStart=/usr/bin/java -jar $JAR_FILE --param1=value1 --param2=value2

權(quán)限與限制

根據(jù)需要,你還可以在 [Service] 部分設(shè)置資源限制(如內(nèi)存、CPU限制)、工作目錄、文件描述符限制等。查閱 systemd.exec(5) 手冊頁了解更多信息。

完成以上步驟后,你的Java應(yīng)用程序就已成功配置為由 systemd 管理的服務(wù),可以方便地進(jìn)行啟動、停止、重啟以及查看狀態(tài)和日志。

需要使用nohup保持后臺運(yùn)行嗎

在使用 systemd 管理服務(wù)的情況下,通常不需要使用 nohup 命令來保持服務(wù)在后臺運(yùn)行。

systemd 已經(jīng)提供了完善的后臺服務(wù)管理機(jī)制,它能夠確保服務(wù)進(jìn)程在后臺持續(xù)運(yùn)行,并在必要時(shí)根據(jù)配置自動重啟服務(wù)。

在上述 myapp.service 示例中,ExecStart 參數(shù)定義了啟動服務(wù)的命令:

ExecStart=/usr/bin/java -jar $JAR_FILE

這里直接使用 java -jar 命令啟動Java應(yīng)用程序,無需加上 nohupsystemd 會負(fù)責(zé)管理這個(gè)進(jìn)程的生命周期,確保它在后臺運(yùn)行,不受終端會話影響,并在服務(wù)停止時(shí)正確清理資源。

因此,當(dāng)您按照上述步驟將Java應(yīng)用程序配置為 systemd 服務(wù)后,就不需要再使用 nohup 命令來保持其后臺運(yùn)行。systemd 提供的穩(wěn)定性和可靠性足以滿足大多數(shù)生產(chǎn)環(huán)境的需求。

如果您在Jenkins Pipeline中需要啟動這個(gè)服務(wù),可以直接調(diào)用 systemctl start myapp.service,而不是使用 nohup java -jar ... &。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • spring6代理模式和AOP示例詳解

    spring6代理模式和AOP示例詳解

    本文主要介紹了Spring框架中的JdbcTemplate、代理模式和面向切面編程(AOP)的概念、原理和實(shí)現(xiàn)方式,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2026-02-02
  • Jenkins Pipeline為Kubernetes應(yīng)用部署增加狀態(tài)檢測腳本優(yōu)化

    Jenkins Pipeline為Kubernetes應(yīng)用部署增加狀態(tài)檢測腳本優(yōu)化

    這篇文章主要為大家介紹了Jenkins Pipeline為Kubernetes應(yīng)用部署增加狀態(tài)檢測腳本優(yōu)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Java PriorityQueue優(yōu)點(diǎn)和缺點(diǎn)面試精講

    Java PriorityQueue優(yōu)點(diǎn)和缺點(diǎn)面試精講

    這篇文章主要為大家介紹了Java面試中PriorityQueue的優(yōu)點(diǎn)和缺點(diǎn)及使用注意詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • JAVA實(shí)現(xiàn)線程的三種方法

    JAVA實(shí)現(xiàn)線程的三種方法

    這篇文章介紹了JAVA實(shí)現(xiàn)線程的三種方法,有需要的朋友可以參考一下
    2013-09-09
  • Rocketmq事務(wù)消息之半消息詳解

    Rocketmq事務(wù)消息之半消息詳解

    這篇文章主要介紹了Rocketmq事務(wù)消息之半消息詳解,RocketMQ的事務(wù)消息支持在業(yè)務(wù)邏輯與發(fā)送消息之間提供事務(wù)保證,RocketMQ通過兩階段的方式提供事務(wù)消息的支持,需要的朋友可以參考下
    2023-09-09
  • Spring中的事務(wù)隔離級別的介紹

    Spring中的事務(wù)隔離級別的介紹

    今天小編就為大家分享一篇關(guān)于Spring中的事務(wù)隔離級別的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 解讀Spring定義Bean的兩種方式:<bean>和@Bean

    解讀Spring定義Bean的兩種方式:<bean>和@Bean

    這篇文章主要介紹了Spring定義Bean的兩種方式:<bean>和@Bean,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Springboot實(shí)現(xiàn)過濾器的兩種方式

    Springboot實(shí)現(xiàn)過濾器的兩種方式

    今天通過本文給大家分享Springboot實(shí)現(xiàn)過濾器的兩種方式,第一種是spring容器注冊filter,第二種方式是通過@WebFilter 注解來配置,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10
  • java通過證書訪問etcd的實(shí)現(xiàn)步驟

    java通過證書訪問etcd的實(shí)現(xiàn)步驟

    Etcd提供了多種語言的客戶端庫,本文主要介紹了java通過證書訪問etcd的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 配置了jdk的環(huán)境idea卻提示找不到j(luò)dk解決辦法

    配置了jdk的環(huán)境idea卻提示找不到j(luò)dk解決辦法

    在使用Java編程語言進(jìn)行開發(fā)時(shí),IDEA是一個(gè)非常流行和強(qiáng)大的集成開發(fā)環(huán)境,這篇文章主要給大家介紹了關(guān)于配置了jdk的環(huán)境idea卻提示找不到j(luò)dk的解決辦法,需要的朋友可以參考下
    2023-12-12

最新評論

藁城市| 三江| 定陶县| 桑日县| 土默特左旗| 股票| 共和县| 兖州市| 杂多县| 德昌县| 万源市| 龙门县| 涪陵区| 松桃| 临沭县| 淮安市| 久治县| 密云县| 林州市| 新源县| 麻城市| 静宁县| 昌邑市| 湘阴县| 东平县| 措美县| 金秀| 新建县| 东乡县| 上林县| 涞源县| 肃南| 长白| 乌拉特中旗| 孟州市| 金坛市| 克什克腾旗| 梁山县| 安平县| 高阳县| 湘西|