015 Linux 標准輸入輸出、重定向、管道和后台啟動進程命令


file

1 三種標准輸入輸出

  1. 標准輸入(STDIN),文件描述符號為:0,默認從鍵盤獲取輸入;
  2. 標准輸出(STDOUT),文件描述符號為:1,默認輸出到顯示終端;
  3. 標准錯誤輸出(STDERR),文件描述符號為:2,默認輸出到顯示終端;

2 什么是重定向?如何重定向?

(1)什么是重定向?

IO 重定向是為了改變默認輸入、輸出的位置,如默認情況下標准輸出(STDOUT),標准錯誤輸出(STDERR)都是輸出到顯示終端,如對標准輸出、標准錯誤輸出改變其默認輸出位置,可重定向輸出到指定的文件中(實際工作中經常這么使用),要重定向就要配合一些語法符號。

(2)如何重定向?

  • Linux Shell 使用 " > " 和 ">>"  進行對文件描述符進行重定向
  1. ">" # 使用本次輸出內容替換原有文件的內容;
  2. ">>"  把本次輸出追加到原文件的后面;
  • 常見的一些輸出重定向(標准輸出和標准錯誤輸出)表示
  1. 【>】標准輸出覆蓋重定向
  2. 【>>】標准輸出追加重定向
  3. 【2>】標准錯誤輸出覆蓋重定向
  4. 【2>>】標准錯誤輸出追加重定向
  5. 【&>】將標准輸出和標准錯誤輸出都同時覆蓋重定向
  6. 【&>>】將標准輸出和標准錯誤輸出都同時追加重定向

3 管道符以及和它容易混淆的一些符號使用

(1)管道符 |

  • 格式 : 命令1 | 命令2 ...
  • 解釋: 命令1 的輸出作為命令2的操作對象

(2)&和&&、|和|| 區別、分號(;)用法

  • & 表示任務在后台執行;
  • && 邏輯與,只有前一條命令執行成功時,才執行后一條命令 ,如 echo '1' && echo '2';
  • | 表示管道,上一條命令的輸出,作為下一條命令操作對象;
  • || 邏輯或,只有上一條命令執行失敗后,才執行下一條命令;
  • ";" 用法方式:command1 ; command2,用 ; 號隔開每個命令,每個命令按照從左到右的順序執行,彼此之間不關心是否失敗, 所有命令都會執行。

4 nohup 后台啟動進程命令和案例

  • nohup 讓某個進程在后台運行。
  • nohup 英文全稱 no hang up(不掛起),用於在系統后台不掛斷地運行命令,退出終端不會影響程序的運行。
  • nohup 命令,在默認情況下(非重定向時),會輸出一個名叫 nohup.out 的文件到當前目錄下,如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。
# 以后台進程執行啟動 grafana 命令,& 放在命令到結尾,表示后台運行
nohup ./bin/grafana-server  start > grafana.log 2>&1 &

# 2>&1 解釋:將標准錯誤輸出(2 表示)重定向到標准輸出(&1 表示) ,標准輸出(&1) 再被重定向輸入到 grafana.log 文件中。

5 小結

  • 總結了 Linux 中標准輸入(0 表示),標准輸出(1 表示),標准錯誤輸出(2 表示)以及它們的重定向用法;
  • 接着簡述了管道符 | 用法,以及 &和&&、|和|| 區別、分號(;)用法;
  • 最后結合 nohup 后台啟動進程命令在實際工作中和上述提到的命令的綜合使用。

「不甩鍋的碼農」原創,轉載請注明來源,未經授權禁止商業用途!同名 GZH 請關注!


免責聲明!

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



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