liunx標準輸入與輸出
一、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. 後台程序運行,分別將標準輸出與標準錯誤寫入不同的日誌文件內。