解析nohup java -jar xxx &


一直就知道 java -jar xx ctrl+c就退出了

來自這個文

https://blog.csdn.net/wngpenghao/article/details/83022185

 

java -jar XXX.jar &
命令結尾沒有 “&” ,則變成 “java -jar XXX.jar ” ,表示在當前ssh窗口,可按CTRL + C打斷程序運行,或者直接關閉窗口,則程序直接退出
命令結尾添加 “&” ,則變成 “java -jar XXX.jar &” ,表示在當窗口關閉時,程序才會中止運行。&代表讓該命令在后台執行。
nohup java -jar XXX.jar > Log.log &
或者
nohup java -jar XXX.jar >> Log.log &
命令 "nohup java -jar XXX.jar &" 部分,表示不掛斷運行命令,當賬戶退出或終端關閉時,程序仍然運行。注意,該作業的所有輸出被重定向到nohup.out的文件中。
命令 "nohup java -jar XXX.jar > Log.log &" 部分,表示不掛斷運行命令,當賬戶退出或終端關閉時,程序仍然運行,並且該作業的所有輸出被重定向到Log.log的文件中。“ > Log.log ” 該命令就是指定日志輸出的文件。
">>"表示將輸出以追加的方式重定向到Log.log中。
nohup java -jar XXX.jar > Log.log 2>&1 &
或者
nohup java -jar XXX.jar >> Log.log 2>&1 &
或者
nohup java -jar XXX.jar > /dev/null 2>&1 &
標准輸入文件(stdin):stdin的文件描述符為0,Unix程序默認從stdin讀取數據。
標准輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認向stdout輸出數據。
標准錯誤文件(stderr):stderr的文件描述符為2,Unix程序會向stderr流中寫入錯誤信息。
屏蔽輸出,起到禁止輸出作用:/dev/null 是一個特殊的文件,寫入到它的內容都會被丟棄;如果嘗試從該文件讀取內容,那么什么也讀不到。但是 /dev/null 文件非常有用,將命令的輸出重定向到它,會起到"禁止輸出"的效果。
“> Log.log 2>&1” :表示將 stdout 和 stderr 合並后重定向到 Log.log

 

示例:

nohup java -jar BiuBiuBiu.jar >output 2>&1 &

解釋:
 1. 帶&的命令行,即使terminal(終端)關閉,或者電腦死機程序依然運行(前提是你把程序遞交到服務器上); 

 2. 2>&1的意思 

  這個意思是把標准錯誤(2)重定向到標准輸出中(1),而標准輸出又導入文件output里面,所以結果是標准錯誤和標准輸出都導入文件output里面了。 至於為什么需要將標准錯誤重定向到標准輸出的原因,那就歸結為標准錯誤沒有緩沖區,而stdout有。這就會導致 >output 2>output 文件output被兩次打開,而stdout和stderr將會競爭覆蓋,這肯定不是我門想要的. 

  這就是為什么有人會寫成: nohup ./command.sh >output 2>output出錯的原因了 
————————————————
版權聲明:本文為CSDN博主「BiuBiuBiu___」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/BiuBiuBiu___/article/details/86140083

 

 

最后談一下/dev/null文件的作用,這是一個無底洞,任何東西都可以定向到這里,但是卻無法打開。 所以一般很大的stdou和stderr當你不關心的時候可以利用stdout和stderr定向到這里    ./start.sh >/dev/null 2>&1 

 

一般不需要查看日志的就直接丟掉丟掉

nohup java -jar BiuBiuBiu.jar >/dev/null 2>&1 &


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM