溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

jar包的啟動(dòng)方式有哪些

發(fā)布時(shí)間:2023-04-04 11:53:11 來源:億速云 閱讀:208 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“jar包的啟動(dòng)方式有哪些”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“jar包的啟動(dòng)方式有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

    一、各種啟動(dòng)方式

    1.java -jar

    # 例子
    java -jar test.jar

    這是最簡單的啟動(dòng)方式,同時(shí)弊端也是很多的。

    弊端1:exit 退出終端會(huì)導(dǎo)致java進(jìn)程中斷。
    弊端2:ctrl+c 退出啟動(dòng)展示頁會(huì)導(dǎo)致java進(jìn)程中斷。
    弊端3:直接關(guān)閉終端會(huì)導(dǎo)致java進(jìn)程中斷(啟動(dòng)時(shí)和啟動(dòng)完關(guān)閉都會(huì)導(dǎo)致java進(jìn)程終端)。
    弊端4:控制臺(tái)日志不打?。ㄟ@個(gè)可以不算弊端吧,其實(shí)很多場景不需要這個(gè)日志,這里姑且算是吧)

    所以該命令是不能直接使用的。下面是演示使用ctrl+c退出啟動(dòng)展示頁后程序進(jìn)行自動(dòng)中斷的截圖:

    jar包的啟動(dòng)方式有哪些

    從截圖中可以看到,當(dāng)使用ctrl+c時(shí),終端會(huì)終止剛剛使用java -jar啟動(dòng)的進(jìn)程,所以導(dǎo)致了java進(jìn)程的中斷。

    2.java -jar test.jar &

    # 例子
    java -jar test.jar &

    可以看到這種啟動(dòng)方式是多了&,&的作用是讓程序可以以后臺(tái)模式運(yùn)行,這樣我們使用ctrl+c,或者exit退出啟動(dòng)頁面時(shí)程序不會(huì)被終止,但是關(guān)閉終端會(huì)導(dǎo)致程序退出,無論是程序啟動(dòng)時(shí)直接關(guān)閉終端還是程序啟動(dòng)完畢在關(guān)閉,都會(huì)導(dǎo)致程序異常終止,總結(jié)如下:

    弊端1:直接關(guān)閉終端會(huì)導(dǎo)致java進(jìn)程中斷(啟動(dòng)時(shí)和啟動(dòng)完關(guān)閉都會(huì)導(dǎo)致java進(jìn)程終端)。
    弊端2:控制臺(tái)日志不打印(這個(gè)可以不算弊端吧,其實(shí)很多場景不需要這個(gè)日志,這里姑且算是吧)

    下面是使用ctrl+c退出啟動(dòng)頁的結(jié)果,可以發(fā)現(xiàn)此時(shí)程序還在運(yùn)行。

    jar包的啟動(dòng)方式有哪些

    3.nohup java -jar test.jar

    # 例子
    nohup java -jar test.jar

    該命令相當(dāng)于第一個(gè)場景增加了nohup命令,nohup命令其實(shí)就是為了指定輸出文件的,用在這里自然就是指定java的輸出了。nohup默認(rèn)會(huì)將文件打印在當(dāng)前文件夾下的nohup.out文件中,若是該文件權(quán)限不足,則會(huì)將日志輸出到$HOME/nohup.out。值得一提的事,這里的輸出接收的都是java控制臺(tái)的輸出。同時(shí)第一個(gè)場景擁有的弊端除了不打印控制臺(tái)日志他都有。所以這個(gè)命令我們一般也不用。

    弊端1:exit 退出終端會(huì)導(dǎo)致java進(jìn)程中斷。
    弊端2:ctrl+c 退出啟動(dòng)展示頁會(huì)導(dǎo)致java進(jìn)程中斷。
    弊端3:直接關(guān)閉終端會(huì)導(dǎo)致java進(jìn)程中斷(啟動(dòng)時(shí)和啟動(dòng)完關(guān)閉都會(huì)導(dǎo)致java進(jìn)程終端)。

    【這里不重復(fù)驗(yàn)證了】

    4.nohup java -jar test.jar &

    # 例子
    nohup java -jar test.jar &

    與上個(gè)命令相比增加了 &,作用可以類比第二個(gè)場景,然后增加了日志輸出。那是不是說還是有“關(guān)閉終端會(huì)導(dǎo)致程序終止”這個(gè)弊端呢,答案是否,使用這個(gè)命令關(guān)閉終端(無論是啟動(dòng)時(shí)還是啟動(dòng)完畢)都不會(huì)終止程序(原因是因?yàn)殛P(guān)閉終端這里其實(shí)關(guān)閉的是nohup的命令層級(jí),對(duì)java程序已經(jīng)起不到影響,linux肯定對(duì)nohup命令做了特殊處理)。

    所以說以上所有的弊端,這個(gè)命令已經(jīng)沒有了,啟動(dòng)程序使用這個(gè)命令也是完全沒有問題的。

    弊端1:日志定向輸出當(dāng)前文件夾下的nohup.out(與下面幾個(gè)命令相比,姑且算是弊端吧)

    5.nohup java -jar test.jar > ./info.log &

    # 例子
    nohup java -jar test.jar >  ./info.log &

    該命令沒有弊端,與上一個(gè)場景的區(qū)別是會(huì)將日志打印到指定的info.log下面。不過打印方式是覆蓋。也就是說每次啟動(dòng)以后,都會(huì)將之前的日志覆蓋

    6. nohup java -jar test.jar >> ./info.log &

    # 例子
    nohup java -jar test.jar >>  ./info.log &

    該命令沒有弊端,與上一個(gè)場景的區(qū)別是會(huì)將日志打印到指定的info.log下面。不過打印方式是拼接。也就是說每次啟動(dòng)以后,都會(huì)將本次的日志拼接到原日志之后進(jìn)行輸出,這里日志因?yàn)槭强刂婆_(tái)日志,一般沒必要拼接

    7. nohup java -jar test.jar >> /dev/null &

    # 例子
    nohup java -jar test.jar >> /dev/null &

    這個(gè)命令是將日志輸出到/dev/null,/dev/null是linux系統(tǒng)里的黑洞,其實(shí)可以理解為垃圾桶,相當(dāng)于把日志扔了不要了,其他就沒什么區(qū)別了。
    【這幾個(gè)命令就不重復(fù)測試了】

    二、總結(jié)

    常用的命令其實(shí)就三個(gè),根據(jù)需要選擇即可

    # 需要打印控制臺(tái)日志,無需保留之前的日志信息
    nohup java -jar test.jar >  ./info.log &
    # 需要打印控制臺(tái)日志,需要保留之前的日志信息
    nohup java -jar test.jar >>  ./info.log &
    # 不需要打印控制臺(tái)日志
    nohup java -jar test.jar >> /dev/null &

    讀到這里,這篇“jar包的啟動(dòng)方式有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    jar
    AI