歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux標准IO和後台運行程序的方法

Linux標准IO和後台運行程序的方法

日期:2017/2/28 16:08:36   编辑:Linux教程

相關知識

標准輸入默認為鍵盤,也可以使用文件和管道(pipe |);

標准輸入默認輸出到終端(terminal),但是也可以重定向到文件、管道或後引號;

標准錯誤默認輸出到終端,但是也可以重定向到文件中;

標准的輸入、輸出和錯誤在C中分別表示為STDIN、STDOUT、STDERR,也可以使用0,1,2來表示。

/dev/null空設備文件,也稱為位桶(bit bucket),它可以看作是一個“黑洞”,等價於一個只寫的文件,所有的寫入內容都會永遠的消失。

/dev/zero是一個輸入設備,可以使用它來初始化文件(寫入字符串0),它實際上產生連續不斷的null流,主要用於創建一個指定長度的初始化空文件。

重定向到null設備文件

在shell中可能經常能看到>/dev/null 2>&1,分解這個組合為下面的五部分:

1:>表示重定向到那裡;

2: /dev/null表示空設備文件

3: 2>表示重定向標准錯誤STDERR

4: &表示等同於的意思,2>&1表示標准錯誤的輸出重定向到等同於標准輸出

5: 1表示標准輸出STDOUT,系統默認輸出為1,所以>/dev/null等同於1>/dev/null。

其執行過程為:

1>/dev/null:首先將標准輸出重定向到空設備文件,也就是不輸出任何信息到終端(即不顯示任何信息);

2>&1:然後標准錯誤輸出重定向到標准輸出上,因為之前已經重定向標准輸出到空設備文件,此時標准錯誤也重定向到空設備文件中。

# command >file 2>file將產生的標准錯誤和標准輸出送到file中,此時file會打開2次,STDOUT和STDERR會相互覆蓋,使得兩個管道FD1和FD2同時搶占file的管道。

# command >file 2>&1 功能與上面的一樣,但是file只打開一次,也使用一個管道FD1。

從IO效率上說,前一條命令效率明顯比後一條命令效率要低。此外,還有一個非常有用的重定向操作符“-”,示例如下:

# (cd /src/dir && tar cf - .) | (cd /dst/dir && tar xvfp -)

該命令是把/src/dir目錄下所有文件通過壓縮後,快速的全部移動到/dst/dir目錄中。

下面還有幾種不常見的用法:

n<&- 表示將n號輸入關閉;

<&-表示關閉標准輸入(鍵盤);

n>&-表示將n號輸出關閉;

>&-表示將標准輸出關閉。

注:清除日志文件內容命令# cat /dev/null > /var/log/messages

重定向

重定向符號為>,它的使用方法有下面一些:

l 1>2 表示把標准輸出STDOUT重定向到文件2中;

l 1>&2 表示把標准輸出STDOUT重定向到標准錯誤STDERR。

l command > log 表示將標准輸出重定向到log文件中,標准錯誤輸出到終端上;

l command > log 2>1 表示將標准輸出重定向到log文件中,標准錯誤重定向到文件1中;

l command >log 2>&1 表示將標准輸出重定向到log文件中,www.linuxidc.com把標准錯誤重定向到標准輸出上。

l command 2>/dev/null 表示把標准錯誤信息重定向到空設備文件;

l command >/dev/null 表示把標准輸出重定向到空設備文件;

l command >/dev/null 2>&1 表示把標准錯誤和標准輸出全部重定向到空設備;

Copyright © Linux教程網 All Rights Reserved