轉(zhuǎn)自https://my.oschina.net/zhaocx/blog/10509
shell中可能經(jīng)常能看到:>/dev/null 2>&1
命令的結(jié)果可以通過(guò) %> 的形式來(lái)定義輸出,其中 %> 代表文件描述符
我們將這個(gè)命令組合:“>/dev/null 2>&1” 拆為四部分來(lái)分析下:
- 1:首先 0> 表示stdin標(biāo)準(zhǔn)輸入; 1> 表示stdout標(biāo)準(zhǔn)輸出; 2> 表示stderr錯(cuò)誤輸出;
- 2:符號(hào) > 等價(jià)于 1> (系統(tǒng)默認(rèn)為1,省略了先); 所以">/dev/null"等同于 "1>/dev/null"
- 3:/dev/null 代表空設(shè)備文件
- 4:& 可以理解為是"等同于"的意思,2>&1颠通,即表示2的輸出重定向等同于1
因此诫舅,>/dev/null 2>&1 也可以寫(xiě)成“1> /dev/null 2> &1”
那么本文標(biāo)題的語(yǔ)句執(zhí)行過(guò)程為:
1>/dev/null:首先表示標(biāo)準(zhǔn)輸出重定向到空設(shè)備文件蹦哼,也就是不輸出任何信息到終端苟耻,說(shuō)白了就是不顯示任何信息剧包。
2>&1 :接著贷岸,將標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出晋南,因?yàn)橹皹?biāo)準(zhǔn)輸出已經(jīng)重定向到了空設(shè)備文件,所以標(biāo)準(zhǔn)錯(cuò)誤輸出也重定向到空設(shè)備文件蚣驼。
還看到kafka在啟動(dòng)的腳本里面這么寫(xiě)到:
nohup bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 &
查了一下:
在命令最后加上&符號(hào)魄幕,表示讓這個(gè)進(jìn)程到后臺(tái)去執(zhí)行,這樣立刻返回到提示符狀態(tài)颖杏,我們可以接著做下面的事纯陨。如:command &。
這種“后臺(tái)”進(jìn)程在shell一直打開(kāi)的情況下是沒(méi)有問(wèn)題的输玷,如果我們關(guān)了shell窗口甚至退出ssh登錄或vnc登錄队丝,那么進(jìn)程自動(dòng)就結(jié)束了。所以如果想退出窗口乃至退出登錄仍然保持程序運(yùn)行欲鹏,再加上nohup机久,形如:nohup command 1>output 2>&1 &