nohup sh start.sh >/dev/null 2>&1 &


nohup sh start.sh >/dev/null 2>&1 &


 

背景說明

start.sh 腳本里,寫了Java應用程序啟動的相關命令,並且在 log4j.properties 中配置了日志的輸出路徑。

此時,啟動服務的時候,如果使用如下命令,則會在start.sh腳本所在的目錄下,產生一個名為 nohup.out 的輸出文件。

nohup sh start.sh &

 

這個多余的 nohup.out 文件是不需要的,可以使用如下命令解決:

nohup sh start.sh >/dev/null 2>&1 &

 

命令解析

1、nohup &

nohup 表示永久運行& 表示后台運行

 

2、>/dev/null 2>&1

/dev/null 代表空設備文件,也就是不輸出任何信息到終端。

操作系統中有三個常用的流:
  0:標准輸入流 stdin
  1:標准輸出流 stdout
  2:標准錯誤流 stderr

">/dev/null" 等價於 "1>/dev/null",表示標准輸出(1)輸出到 /dev/null 中,即終端不輸出標准輸出信息

"2>&1" 中的 “&” 是等價於的意思,表示 標准錯誤(2)輸出的位置 等價於 標准輸出(1)的位置,即等價於 “2>/dev/null”, 即終端不輸出標准錯誤信息

因此,">/dev/null 2>&1" 表示 標准錯誤信息和標准輸出信息,在終端上均不輸出。


 

3、指定輸出文件

如果想要將服務啟動和運行過程中的日志信息輸出到指定位置(比如:/var/log/start.log),可以參考如下命令:

nohup sh start.sh >/var/log/start.log 2>&1 &

 


免責聲明!

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



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