LINUX 標(biāo)準(zhǔn)錯誤輸出重定向

nohup? ./test.sh ?> log.txt 2>&1? &

1.? ? nohup

用途:不掛斷地運行命令。

語法:nohup Command [ Arg … ] [ & ]

  無論是否將 nohup 命令的輸出重定向到終端,輸出都將附加到當(dāng)前目錄的 nohup.out 文件中。

  如果當(dāng)前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。

  如果沒有文件能創(chuàng)建或打開以用于追加,那么 Command 參數(shù)指定的命令不可調(diào)用。

退出狀態(tài):該命令返回下列出口值:

  126 可以查找但不能調(diào)用 Command 參數(shù)指定的命令。

  127 nohup 命令發(fā)生錯誤或不能查找由 Command 參數(shù)指定的命令。

  否則,nohup 命令的退出狀態(tài)是 Command 參數(shù)指定命令的退出狀態(tài)。

2.? ? &

用途:在后臺運行

一般兩個一起用

nohup command &

3.為什么呢 2>&1 要寫在后面?

command > file 2>&1

首先是command > file將標(biāo)準(zhǔn)輸出重定向到file中, 2>&1 是標(biāo)準(zhǔn)錯誤拷貝了標(biāo)準(zhǔn)輸出的行為,也就是同樣被重定向到file中,最終結(jié)果就是標(biāo)準(zhǔn)輸出和錯誤都被重定向到file中。

command 2>&1 >file

2>&1 標(biāo)準(zhǔn)錯誤拷貝了標(biāo)準(zhǔn)輸出的行為,但此時標(biāo)準(zhǔn)輸出還是在終端。>file 后輸出才被重定向到file,但標(biāo)準(zhǔn)錯誤仍然保持在終端。

用strace可以看到:

command > file 2>&1

這個命令中實現(xiàn)重定向的關(guān)鍵系統(tǒng)調(diào)用序列是:

open(file) == 3

dup2(3,1)

dup2(1,2)


command 2>&1 >file

這個命令中實現(xiàn)重定向的關(guān)鍵系統(tǒng)調(diào)用序列是:

dup2(1,2)

open(file) == 3

dup2(3,1)


3.? ?2>&1

注意:0 是標(biāo)準(zhǔn)輸入(STDIN),1 是標(biāo)準(zhǔn)輸出(STDOUT),2 是標(biāo)準(zhǔn)錯誤輸出(STDERR)。

這里的2和>之間不可以有空格,2>是一體的時候才表示錯誤輸出。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容