linux重定向及nohup不輸出的方法

先說(shuō)一下linux重定向:
0、1和2分別表示標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出標(biāo)準(zhǔn)錯(cuò)誤信息輸出,可以用來(lái)指定需要重定向的標(biāo)準(zhǔn)輸入或輸出。

在一般使用時(shí),默認(rèn)的是標(biāo)準(zhǔn)輸出,既1

當(dāng)我們需要特殊用途時(shí),可以使用其他標(biāo)號(hào)。例如,將某個(gè)程序的錯(cuò)誤信息輸出到log文件中:./program 2>log。這樣標(biāo)準(zhǔn)輸出還是在屏幕上,但是錯(cuò)誤信息會(huì)輸出到log文件中。

另外,也可以實(shí)現(xiàn)0,1,2之間的重定向。

2>&1 將錯(cuò)誤信息重定向到標(biāo)準(zhǔn)輸出。

Linux下還有一個(gè)特殊的文件/dev/null,它就像一個(gè)無(wú)底洞,所有重定向到它的信息都會(huì)消失得無(wú)影無(wú)蹤。這一點(diǎn)非常有用,當(dāng)我們不需要回顯程序的所有信息時(shí),就可以將輸出重定向到/dev/null。
如果想要正常輸出和錯(cuò)誤信息都不顯示,則要把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤都重定向到/dev/null, 例如:

ls 1>/dev/null 2>/dev/null

還有一種做法是將錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出,然后再重定向到 /dev/null,例如:

ls >/dev/null 2>&1

注意:此處的順序不能更改,否則達(dá)不到想要的效果,此時(shí)先將標(biāo)準(zhǔn)輸出重定向到 /dev/null,然后將標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出,由于標(biāo)準(zhǔn)輸出已經(jīng)重定向到了/dev/null,因此標(biāo)準(zhǔn)錯(cuò)誤也會(huì)重定向到/dev/null,于是一切靜悄悄:-)

由于使用nohup時(shí),會(huì)自動(dòng)將輸出寫(xiě)入nohup.out文件中,如果文件很大的話,nohup.out就會(huì)不停的增大,這是我們不希望看到的,因此,可以利用/dev/null來(lái)解決這個(gè)問(wèn)題。

(1)舍棄標(biāo)準(zhǔn)輸出,將錯(cuò)誤輸出到log文件中

nohup node bin/www >/dev/null 2>log &

(2)如果錯(cuò)誤信息也不想要的話:

nohup node bin/www >/dev/null 2>&1 &

注:其中node bin/www是項(xiàng)目node啟動(dòng)


關(guān)于重定向,參考文章:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=484163{:target="_blank"}

1. 基本概念

a、I/O重定向通常與 FD有關(guān),shell的FD通常為10個(gè),即 0~9;(FD:file descripter,文件描述符)
b、常用FD有3個(gè),為: 0(stdin,標(biāo)準(zhǔn)輸入)、1(stdout,標(biāo)準(zhǔn)輸出)、2(stderr,標(biāo)準(zhǔn)錯(cuò)誤輸出),默認(rèn)與keyboard、monitor、monitor有關(guān);
c、用 < 來(lái)改變讀進(jìn)的數(shù)據(jù)信道(stdin),使之從指定的檔案讀進(jìn);
d、用 > 來(lái)改變送出的數(shù)據(jù)信道(stdout, stderr),使之輸出到指定的檔案;
e、0 是 < 的默認(rèn)值,因此 < 與 0<是一樣的;同理,> 與 1> 是一樣的;
f、在IO重定向 中,stdout 與 stderr 的管道會(huì)先準(zhǔn)備好,才會(huì)從 stdin 讀進(jìn)資料;
g、管道“|”(pipe line):上一個(gè)命令的 stdout 接到下一個(gè)命令的 stdin;
h、tee 命令是在不影響原本 I/O 的情況下,將 stdout 復(fù)制一份到檔案去;
i、bash(ksh)執(zhí)行命令的過(guò)程:分析命令-變量求值-命令替代(``和$( ))-重定向-通配符展開(kāi)-確定路徑-執(zhí)行命令;
j、( )  將 command group 置于 sub-shell 去執(zhí)行,也稱(chēng) nested sub-shell,它有一點(diǎn)非常重要的特性是:繼承父shell的Standard input, output, and error plus any other open file descriptors。
k、exec 命令:常用來(lái)替代當(dāng)前 shell 并重新啟動(dòng)一個(gè) shell,換句話說(shuō),并沒(méi)有啟動(dòng)子 shell。使用這一命令時(shí)任何現(xiàn)有環(huán)境都將會(huì)被清除,。exec 在對(duì)文件描述符進(jìn)行操作的時(shí)候,也只有在這時(shí),exec 不會(huì)覆蓋你當(dāng)前的 shell 環(huán)境。

2. 基本IO

cmd > file              把 stdout 重定向到 file 文件中
cmd >> file             把 stdout 重定向到 file 文件中(追加)
cmd 1> fiel             把 stdout 重定向到 file 文件中
cmd > file 2>&1         把 stdout 和 stderr 一起重定向到 file 文件中
cmd 2> file             把 stderr 重定向到 file 文件中
cmd 2>> file            把 stderr 重定向到 file 文件中(追加)
cmd >> file 2>&1        把 stderr 和 stderr 一起重定向到 file 文件中
cmd < file >file2       cmd 命令以 file 文件作為 stdin,以 file2 文件作為 stdout
cat <>file              以讀寫(xiě)的方式打開(kāi) file
cmd < file              cmd 命令以 file 文件作為 stdin
cmd << delimiter        Here document,從 stdin 中讀入,直至遇到delimiter 分界符
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 轉(zhuǎn)自: http://blog.csdn.net/geekster/article/details/6657620...
    點(diǎn)點(diǎn)漁火閱讀 446評(píng)論 0 0
  • 先說(shuō)一下linux重定向: 0、1和2分別表示標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤信息輸出,可以用來(lái)指定需要重定向的標(biāo)準(zhǔn)輸...
    夢(mèng)歸游子意閱讀 1,209評(píng)論 1 2
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,216評(píng)論 2 33
  • 冬至已過(guò),夏至未至 還有181天 改變必須改變的 期待未知的自己 2016 會(huì)更好
    8234a3ce322b閱讀 231評(píng)論 0 0

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