nohup命令及其輸出檔案

2021-09-24 03:49:24 字數 1173 閱讀 9950

今天在linux上部署wdt程式,在ssh客戶端執行./start-dishi.sh,啟動成功,在關閉ssh客戶端後,執行的程式也同時終止了,怎樣才能保證在推出ssh客戶端後程式能一直執行呢?通過網上查詢資料,發現需要使用nohup命令。

完美解決方案:nohup ./start-dishi.sh >output 2>&1 &

現對上面的命令進行下解釋

用途:不結束通話地執行命令。

語法:nohup command [ arg ... ] [ & ]

描述:nohup 命令執行由 command 引數和任何相關的 arg 引數指定的命令,忽略所有結束通話(sighup)訊號。在登出後使用 nohup 命令執行後台中的程式。要執行後台中的 nohup 命令,新增 & ( 表示「and」的符號)到命令的尾部。

作業系統中有三個常用的流:

0:標準輸入流 stdin

1:標準輸出流 stdout

2:標準錯誤流 stderr

一般當我們用 > console.txt,實際是 1>console.txt的省略用法;< console.txt ,實際是 0 < console.txt的省略用法。

下面步入正題:

>nohup ./start-dishi.sh >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出錯的原因了 

最後談一下/dev/null檔案的作用,這是乙個無底洞,任何東西都可以定向到這裡,但是卻無法開啟。 所以一般很大的stdou和stderr當你不關心的時候可以利用stdout和stderr定向到這裡》./command.sh >/dev/null 2>&1 

nohup 命令輸出到指定檔案

在linux中執行命令行時,會輸出一些日誌資訊,特別典型的是啟用weblogic命令時,輸出一些資訊,當啟用demon模式執行時,又想收集這些資訊咋辦?解決的辦法就是使用輸出重定向,如下面的命令 nohup run log 2 1 其中log是儲存輸出的檔名稱 2 1 表示不僅命令列正常的輸出儲存到...

Qt CuteLogger 日誌輸出檔案

qt 開發過程中,我們經常使用qdebug 來輸出一條除錯資訊,但是,等軟體正式發布之後,我們就需要軟體執行日誌功能,使用日誌功能,能夠快速的進行異常錯誤的跟蹤和定位。也能檢視軟體執行的情況。qt的日誌工具有很多,log4cplus log4cxx,log4qt等等,當然,也可以採用qt的訊息輸出,...

稀疏陣列 輸出檔案

稀疏陣列 需求稀疏陣列 test public void test1 system.out.println system.out.println 將二維陣列 轉 稀疏陣列的思 1.先遍歷二維陣列 得到非0資料的個數 int sum 0 for int i 0 i 11 i 2.建立對應的稀疏陣列 i...