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

linux中nohup?java?-jar啟動(dòng)java項(xiàng)目的步驟

 更新時(shí)間:2024年08月21日 09:48:16   作者:程序員王也  
nohup是一個(gè)Unix和Linux命令,用于運(yùn)行關(guān)閉時(shí)不會(huì)被終止的進(jìn)程,這篇文章主要給大家介紹了關(guān)于linux中nohup?java?-jar啟動(dòng)java項(xiàng)目的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

理解nohup命令

nohup命令的基本概念

nohup是一個(gè)常用的Unix命令,用于在忽略掛起信號(hào)(SIGHUP)的情況下運(yùn)行指定的命令或進(jìn)程。當(dāng)用戶注銷或關(guān)閉終端時(shí),通常后臺(tái)運(yùn)行的進(jìn)程會(huì)收到SIGHUP信號(hào)而終止。使用nohup可以避免這種情況,使得進(jìn)程即使在用戶注銷后也能繼續(xù)運(yùn)行。

nohup的工作原理

nohup通過(guò)忽略SIGHUP信號(hào)來(lái)實(shí)現(xiàn)命令的持續(xù)運(yùn)行。當(dāng)nohup命令被執(zhí)行時(shí),它會(huì)啟動(dòng)一個(gè)新的進(jìn)程,并將該進(jìn)程的SIGHUP信號(hào)屏蔽,這樣即使終端關(guān)閉,該進(jìn)程也不會(huì)受到影響。

nohup與后臺(tái)進(jìn)程的區(qū)別

后臺(tái)進(jìn)程可以通過(guò)在命令后添加&符號(hào)來(lái)啟動(dòng),如command &。然而,后臺(tái)進(jìn)程在用戶注銷后通常無(wú)法繼續(xù)運(yùn)行,因?yàn)樗鼈儠?huì)收到SIGHUP信號(hào)。與之相比,nohup啟動(dòng)的進(jìn)程則不會(huì)受到用戶注銷的影響。

示例:使用nohup啟動(dòng)Java應(yīng)用

假設(shè)我們有一個(gè)名為MyApp.jar的Java應(yīng)用程序,我們希望在后臺(tái)運(yùn)行它,即使用戶注銷或關(guān)閉終端,應(yīng)用也能持續(xù)運(yùn)行。

啟動(dòng)命令

nohup java -jar MyApp.jar &

這個(gè)命令做了以下幾件事:

  • nohup:告訴系統(tǒng)忽略掛起信號(hào)。
  • java -jar MyApp.jar:實(shí)際的Java命令,用于啟動(dòng)JAR文件。
  • &:將命令放入后臺(tái)執(zhí)行。

輸出重定向

默認(rèn)情況下,nohup會(huì)將輸出重定向到名為nohup.out的文件中。如果需要自定義輸出文件,可以使用重定向操作符:

nohup java -jar MyApp.jar > output.log 2>&1 &

這里:

  • >:將標(biāo)準(zhǔn)輸出重定向到output.log文件。
  • 2>&1:將標(biāo)準(zhǔn)錯(cuò)誤也重定向到同一個(gè)文件。

查看進(jìn)程狀態(tài)

可以使用ps命令查看nohup啟動(dòng)的進(jìn)程狀態(tài):

ps -ef | grep MyApp.jar

停止進(jìn)程

要停止由nohup啟動(dòng)的進(jìn)程,可以使用kill命令結(jié)合進(jìn)程ID(PID):

kill -9 PID

其中,PIDps命令查詢到的進(jìn)程ID。

案例源碼說(shuō)明

以下是使用nohup啟動(dòng)Java應(yīng)用的完整示例,包括啟動(dòng)、輸出重定向和進(jìn)程管理:

啟動(dòng)Java應(yīng)用

nohup java -jar /path/to/MyApp.jar > /path/to/output.log 2>&1 &

查看進(jìn)程

ps -ef | grep MyApp.jar

停止進(jìn)程

kill -9 $(pgrep -f MyApp.jar)

在這個(gè)例子中,pgrep -f MyApp.jar用于查找所有與MyApp.jar相關(guān)的進(jìn)程,然后kill -9發(fā)送SIGKILL信號(hào)以強(qiáng)制終止進(jìn)程。

Java項(xiàng)目打包與部署

Java項(xiàng)目的打包流程

Java項(xiàng)目打包通常指的是將編譯后的.class文件及其依賴項(xiàng)打包成一個(gè)可執(zhí)行的JAR(Java Archive)文件。這個(gè)過(guò)程可以通過(guò)多種工具完成,其中最常用的是Maven和Gradle。

使用Maven打包

<!-- 在pom.xml文件中配置build插件 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.MyApp</mainClass> <!-- 主類全名 -->
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

然后運(yùn)行Maven命令來(lái)打包項(xiàng)目:

mvn clean package

使用Gradle打包

build.gradle文件中配置Jar任務(wù):

jar {
    manifest {
        attributes 'Main-Class': 'com.example.MyApp' // 主類全名
    }
}

然后運(yùn)行Gradle命令來(lái)打包項(xiàng)目:

gradle build

創(chuàng)建可執(zhí)行的JAR文件

創(chuàng)建一個(gè)可執(zhí)行的JAR文件意味著JAR包含了一個(gè)清單文件(MANIFEST.MF),其中指定了程序的入口類。

Maven案例源碼

pom.xml中配置好maven-jar-plugin后,執(zhí)行mvn package命令,Maven會(huì)在target目錄下生成一個(gè)包含所有依賴和配置好清單的JAR文件。

Gradle案例源碼

build.gradle中配置好Jar任務(wù)后,執(zhí)行gradle build命令,Gradle會(huì)在build/libs目錄下生成JAR文件。

部署策略與環(huán)境準(zhǔn)備

部署Java應(yīng)用程序需要考慮運(yùn)行環(huán)境的配置,包括JDK版本、系統(tǒng)權(quán)限、依賴庫(kù)等。

環(huán)境準(zhǔn)備

  • 確保服務(wù)器上安裝了正確版本的JDK。
  • 配置環(huán)境變量,如JAVA_HOME指向JDK安裝目錄。
  • 確保服務(wù)器有適當(dāng)?shù)臋?quán)限設(shè)置,以便應(yīng)用程序可以運(yùn)行。

部署策略

  • 直接部署:將生成的JAR文件上傳至服務(wù)器的指定目錄。
  • 持續(xù)集成/持續(xù)部署(CI/CD):通過(guò)自動(dòng)化工具如Jenkins,自動(dòng)化測(cè)試和部署流程。

案例源碼說(shuō)明

假設(shè)我們已經(jīng)使用Maven或Gradle成功打包了一個(gè)Java應(yīng)用程序,現(xiàn)在需要將其部署到服務(wù)器上。

Maven部署案例

  • 運(yùn)行mvn package生成JAR文件。
  • 使用SCP(安全復(fù)制)命令將JAR文件復(fù)制到服務(wù)器:
    scp target/MyApp.jar username@server:/path/to/deployment
    

Gradle部署案例

  • 運(yùn)行gradle build生成JAR文件。
  • 使用SCP命令將JAR文件復(fù)制到服務(wù)器:
    scp build/libs/MyApp.jar username@server:/path/to/deployment
    

一旦JAR文件上傳到服務(wù)器,就可以使用之前提到的nohup命令來(lái)啟動(dòng)Java應(yīng)用程序。

使用nohup啟動(dòng)Java項(xiàng)目的步驟

準(zhǔn)備啟動(dòng)腳本

在部署Java項(xiàng)目后,創(chuàng)建一個(gè)啟動(dòng)腳本可以簡(jiǎn)化啟動(dòng)過(guò)程,并允許更靈活地管理Java應(yīng)用。以下是一個(gè)簡(jiǎn)單的啟動(dòng)腳本示例:

#!/bin/bash

# Java應(yīng)用的JAR文件路徑
JAR_PATH="/path/to/MyApp.jar"

# 定義日志文件輸出路徑
LOG_FILE="/path/to/MyApp.log"

# 使用nohup命令啟動(dòng)Java應(yīng)用,并將輸出重定向到日志文件
nohup java -jar $JAR_PATH > $LOG_FILE 2>&1 &

# 回顯啟動(dòng)信息
echo "Java application started. Check the log at $LOG_FILE"

確保將/path/to/MyApp.jar/path/to/MyApp.log替換為實(shí)際的JAR文件路徑和日志文件路徑。

配置環(huán)境變量

在啟動(dòng)腳本中或在系統(tǒng)環(huán)境變量中配置必要的環(huán)境變量,如JAVA_HOME和應(yīng)用依賴的庫(kù)路徑。

在腳本中設(shè)置環(huán)境變量

export JAVA_HOME="/usr/lib/jvm/java-8-openjdk"
export PATH="$JAVA_HOME/bin:$PATH"

在系統(tǒng)環(huán)境變量中設(shè)置

  • 對(duì)于Linux系統(tǒng),可以在用戶的.bashrc.profile文件中添加上述export語(yǔ)句。
  • 對(duì)于Windows系統(tǒng),可以通過(guò)系統(tǒng)屬性 -> 高級(jí) -> 環(huán)境變量來(lái)設(shè)置。

啟動(dòng)命令的完整示例

結(jié)合上述腳本和環(huán)境變量配置,一個(gè)完整的啟動(dòng)命令可能如下:

# 運(yùn)行啟動(dòng)腳本
./start-app.sh

確保start-app.sh腳本文件具有執(zhí)行權(quán)限,可以使用chmod命令來(lái)設(shè)置:

chmod +x start-app.sh

監(jiān)控和管理運(yùn)行中的Java應(yīng)用

監(jiān)控和管理Java應(yīng)用對(duì)于確保其穩(wěn)定性和性能至關(guān)重要。

查看進(jìn)程

使用ps命令查看Java應(yīng)用的進(jìn)程信息:

ps -ef | grep java

查看日志

檢查之前定義的日志文件以了解應(yīng)用的運(yùn)行狀況:

tail -f /path/to/MyApp.log

停止應(yīng)用

如果需要停止應(yīng)用,可以使用kill命令結(jié)合進(jìn)程ID(PID):

kill -9 $(pgrep -f MyApp.jar)

案例源碼說(shuō)明

假設(shè)我們有一個(gè)名為MyApp.jar的Java應(yīng)用程序,我們希望在服務(wù)器上自動(dòng)啟動(dòng)它,并確保它在后臺(tái)穩(wěn)定運(yùn)行。

啟動(dòng)腳本start-app.sh

#!/bin/bash

# 設(shè)置環(huán)境變量
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk"
export PATH="$JAVA_HOME/bin:$PATH"

# 指定JAR文件和日志文件路徑
JAR_PATH="/usr/local/apps/MyApp.jar"
LOG_PATH="/var/log/MyApp.log"

# 啟動(dòng)Java應(yīng)用,并將輸出重定向到日志文件
nohup java -jar $JAR_PATH > $LOG_PATH 2>&1 &

echo "Application started. Check logs at $LOG_PATH"

給腳本賦予權(quán)限

chmod +x start-app.sh

啟動(dòng)應(yīng)用

./start-app.sh

監(jiān)控應(yīng)用

# 查看進(jìn)程
ps -ef | grep java

# 查看日志
tail -f /var/log/MyApp.log

停止應(yīng)用

kill -9 $(pgrep -f MyApp.jar)

總結(jié)  

到此這篇關(guān)于linux中nohup java -jar啟動(dòng)java項(xiàng)目的文章就介紹到這了,更多相關(guān)nohup java -jar啟動(dòng)java項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java函數(shù)式編程(九):Comparator

    Java函數(shù)式編程(九):Comparator

    這篇文章主要介紹了Java函數(shù)式編程(九):Comparator,本文是系列文章的第9篇,其它文章請(qǐng)參閱本文底部的相關(guān)文章,需要的朋友可以參考下
    2014-09-09
  • 詳解Java中Collector接口的組成

    詳解Java中Collector接口的組成

    今天給大家?guī)?lái)的是關(guān)于Java基礎(chǔ)的相關(guān)知識(shí),文章圍繞著Collector接口的組成展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 深入理解Java注解類型(@Annotation)

    深入理解Java注解類型(@Annotation)

    這篇文章主要介紹了深入理解Java注解類型(@Annotation),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • SpringBoot之自定義banner使用代碼實(shí)例

    SpringBoot之自定義banner使用代碼實(shí)例

    這篇文章主要介紹了SpringBoot之自定義banner使用代碼實(shí)例,在Spring Boot中,你可以通過(guò)定制Banner來(lái)個(gè)性化你的應(yīng)用程序啟動(dòng)時(shí)的輸出,Banner是一個(gè)在應(yīng)用程序啟動(dòng)時(shí)顯示的ASCII藝術(shù)字形式的標(biāo)志,用于增加應(yīng)用程序的識(shí)別度和個(gè)性化,需要的朋友可以參考下
    2024-01-01
  • Java中的大數(shù)類簡(jiǎn)單實(shí)現(xiàn)

    Java中的大數(shù)類簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了Java中的大數(shù)類簡(jiǎn)單實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 快速掌握J(rèn)ava8中的Optional

    快速掌握J(rèn)ava8中的Optional

    Optional 是一個(gè)容器類,代表一個(gè)值存在或不存在,Optional并不是用來(lái)替換所有的null,而是為了在設(shè)計(jì)良好的API中更明確地表達(dá)可能缺失的值,這篇文章主要介紹了Java8的Optional及使用,需要的朋友可以參考下
    2023-07-07
  • Java設(shè)計(jì)模式——工廠設(shè)計(jì)模式詳解

    Java設(shè)計(jì)模式——工廠設(shè)計(jì)模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式——工廠設(shè)計(jì)模式詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Maven中引入 springboot 相關(guān)依賴的方式(最新推薦)

    Maven中引入 springboot 相關(guān)依賴的方式(最新推薦)

    這篇文章主要介紹了Maven中引入 springboot 相關(guān)依賴的方式(最新推薦),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-04-04
  • Java中常用的代碼匯總

    Java中常用的代碼匯總

    本文給大家分享了20個(gè)常用的java代碼,都是別人項(xiàng)目中使用過(guò)的代碼,這里推薦給大家,有需要的小伙伴可以參考下。
    2015-05-05
  • Spring裝配bean方法實(shí)例總結(jié)

    Spring裝配bean方法實(shí)例總結(jié)

    這篇文章主要介紹了spring裝配bean方法實(shí)例總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論

固始县| 奉节县| 万山特区| 周口市| 本溪| 明溪县| 西乡县| 霸州市| 临邑县| 双桥区| 甘孜县| 林口县| 开化县| 宁德市| 蒙城县| 徐州市| 长春市| 大宁县| 体育| 三原县| 淮滨县| 黎城县| 温泉县| 柞水县| 惠州市| 蛟河市| 田林县| 绥芬河市| 成安县| 正定县| 丹凤县| 平乡县| 中山市| 五寨县| 望江县| 伊宁市| 兴城市| 六枝特区| 张北县| 望奎县| 息烽县|