一、Linux提供了三種輸入/輸出通道給程式
在linux中,每個程序都會有三個檔案,並且這三個檔案會進行重定向處理:
1. 標準輸入(STDIN) - 預設為鍵盤
2. 標準輸出(STDOUT) - 預設為終端視窗
3. 標準錯誤(STDERR) - 預設為終端視窗
4. 2>&1中的數位就是上面重定向後的數位
0: 表示鍵盤輸入
1:將資訊輸入到螢幕(一般linux命令都是預設為1)
2:將資訊輸入到錯誤輸出
二、標準輸出和標準錯誤能重定向到檔案中:
1. 命令 > 檔案:重定向標準輸出到檔案
2. 命令 2> 檔案:重定向標準錯誤到檔案
3. 命令 &> 檔案:重定向所有的輸出到檔案
ps:使用>時會將檔案內容會覆蓋,使用>>時檔案內容追加
三、範例:重定向輸出給一個檔案範例
當前資料夾存在內容為hello world的test001.txt的檔案,但是沒有test002.txt
1. cat兩個檔案時將標準輸出與標準錯誤至控制檯:
cat test001.txt test002.txt
2. 重定向標準輸出到檔案,不包含標準錯誤
cat test001.txt test002.txt > 1.out
3. 重定向標準錯誤到檔案
cat test001.txt test002.txt 2> 1.out
4. 重定向準輸出與標準錯誤輸出至檔案
cat test001.txt test002.txt &> 1.out
5. 重定向準輸出與標準錯誤輸出至兩個不同的檔案
cat test001.txt test002.txt > 1.out 2> 2.out
三、常見用法:
1. 後臺程式執行並,並將紀錄檔儲存至預設地址nohup.out:
nohup java -jar wiremock-jre8-standalone-2.33.2.jar --port 7777 2>&1 &
nohup 命令含義:執行由 Command引數和任何相關的 Arg引數指定的命令,忽略所有結束通話(SIGHUP)訊號。在登出後使用 nohup 命令執行後臺中的程式。要執行後臺中的 nohup 命令,新增 & ( 表示「and」的符號)到命令的尾部
如果不將 nohup 命令的輸出重定向,輸出將附加到當前目錄的 nohup.out 檔案中。如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $HOME/nohup.out 檔案中
2. 同上的命令簡化命令,紀錄檔儲存至log紀錄檔內:
nohup java -jar wiremock-jre8-standalone-2.33.2.jar --port 7777 &>log &
3. 後臺程式執行,並在紀錄檔輸入至黑洞,即不儲存紀錄檔:
nohup java -jar wiremock-jre8-standalone-2.33.2.jar --port 7777 >/dev/null 2>&1 &
4. 後臺程式執行,分別將標準輸出與標準錯誤寫入不同的紀錄檔檔案內。