溫馨提示×

溫馨提示×

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

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

springboot項(xiàng)目中不輸出nohup.out日志如何解決

發(fā)布時(shí)間:2021-07-27 17:51:23 來源:億速云 閱讀:428 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)springboot項(xiàng)目中不輸出nohup.out日志如何解決,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

springboot不輸出nohup.out日志

nohup java -jar mgcr_pc-0.0.1-SNAPSHOT.war >/dev/null 2>log &

注意:這個(gè)log是一個(gè)文件,可以隨意命名

ps aux|grep 你剛剛運(yùn)行的包名.jar

然后會顯示線程id

關(guān)閉進(jìn)程 如5555

kill -9 5555

nohup啟動程序后,nohup.out過大的解決

一般百度到都會說:

cp /dev/null nohup.out
cat /dev/null nohup.out

不能簡單的刪除那個(gè)文件,因?yàn)閘inux的文件管理是引用計(jì)數(shù)法。

可以清空nohup日志,其實(shí)關(guān)鍵在于啟動時(shí)的流輸入方式。如果使用>方式,使用上述方法操作后,再次寫入時(shí),文件會重新變成原來的大小,而使用>>追加方式,確實(shí)可以消除文件的大小。

原因基本描述如下:

linux的文件管理使用fd,用戶可以自定義3以上(包括3)的文件,而0,1,2,則對應(yīng)了3個(gè)標(biāo)準(zhǔn)流

  • 0=標(biāo)準(zhǔn)輸入流stdin

  • 1=標(biāo)準(zhǔn)輸出流stdout

  • 2=標(biāo)準(zhǔn)錯誤流stderr

shell讀取到>時(shí),判斷文件是否存在,不存在則創(chuàng)建文件,之后以w方式寫入,文件指針只會向后增加。

因此使用>作為nohup的重定向時(shí),文件指針一直向后增加,使用上述兩個(gè)命令操作nohup.out,操作時(shí)確實(shí)重寫了整個(gè)文件,但是在程序的下次輸出時(shí),文件的大小又重新變回原來的大小了,這很正常,因?yàn)槲募闹羔樳€在原來的大小的位置,寫入操作時(shí),指針向后偏移“輸出內(nèi)容的大小”,并寫入“輸出內(nèi)容”,此時(shí)文件不得不重新回到原本的大小,雖然原本的內(nèi)容已經(jīng)不見了(此時(shí)那些內(nèi)容的填充為0,類似的操作一次,然后查看nohup文件的16進(jìn)制表示,就會發(fā)現(xiàn)它們?nèi)慷际?x00,可以稱為文件空洞)

而使用>>方式寫入文件時(shí),使用a+方式寫入文件,文件指針指向文件的結(jié)束符EOF位置。

在使用使用上述兩個(gè)命令操作nohup.out時(shí),文件的結(jié)束符確實(shí)重新回到了0x00地址,因此可以清空原本的內(nèi)容,并且不會再創(chuàng)建文件空洞。

看完上述內(nèi)容,你們對springboot項(xiàng)目中不輸出nohup.out日志如何解決有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

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

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

AI