linux中的標(biāo)準(zhǔn)輸入輸出用法

最近在看《Linux Shell編程從入門到精通》這書,把之前朦朧的知識再鞏固一下蒸矛,作些記錄浅悉。

一柿汛,&和&&,|和||區(qū)別

  • & 表示任務(wù)在后臺執(zhí)行冗酿,如要在后臺運行redis-server,則有 redis-server &

  • && 表示前一條命令執(zhí)行成功時,才執(zhí)行后一條命令 络断,如 echo 'hello‘ && echo 'nihao'

  • | 表示管道裁替,上一條命令的輸出,作為下一條命令參數(shù)妓羊,如 echo 'hello' | wc -l

  • || 表示上一條命令執(zhí)行失敗后胯究,才執(zhí)行下一條命令,如 cat nofile || echo "failed"

二躁绸,2>&1的意思

Linux 中三種標(biāo)準(zhǔn)輸入輸出裕循,分別是STDIN,STDOUT净刮,STDERR剥哑,對應(yīng)的數(shù)字是0,1淹父,2株婴。
STDIN就是標(biāo)準(zhǔn)輸入,默認(rèn)從鍵盤讀取信息暑认;STDOUT是標(biāo)準(zhǔn)輸出困介,默認(rèn)將輸出結(jié)果輸出至終端,也就是顯示器之類的東西蘸际;STDERR是標(biāo)準(zhǔn)的錯誤信息座哩,默認(rèn)也會顯示在終端上。由于STDOUT與STDERR都會默認(rèn)顯示在終端上粮彤,為了區(qū)分二者的信息根穷,就有了編號的0姜骡,1,2的定義屿良,用1表示STDOUT圈澈,2表示STDERR。

command > a ---等于 command 1> a 尘惧,默認(rèn)即為標(biāo)準(zhǔn)輸出康栈,錯誤輸出會到當(dāng)前終端。
command > a 2> a ---分別定義標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出褥伴,打開文件兩次谅将。
command > a 2>&1 ---&1的含義就可以理解為用標(biāo)準(zhǔn)輸出的引用漾狼,打開文件一次重慢。
cat 0< ps.sh 2>&1 > testfunc.sh ---將ps.sh作為輸入,標(biāo)準(zhǔn)和錯誤輸出到testfunc.sh逊躁。
cat 0< ps.sh 2>&1 > testfunc.sh ---等于 cat < ps.sh 2>&1 > testfunc.sh似踱,標(biāo)準(zhǔn)輸入為0.
cat 0< ps.sh &> testfunc.sh ---&> 這個符號,就包含了標(biāo)準(zhǔn)和錯誤輸出稽煤,好像和2>&1類似核芽。

'>'只能將正常信息重定向, 與 1> 相同
'&>'可以將錯誤信息或者普通信息都重定向輸出
2>&1 意思是把 標(biāo)準(zhǔn)錯誤輸出 重定向到 標(biāo)準(zhǔn)輸出.
&>file 意思是把標(biāo)準(zhǔn)輸出 和 標(biāo)準(zhǔn)錯誤輸出 都重定向到文件file中

grep da * > greplog1
grep da * > greplog2 1>&2   
grep da * > greplog3 2>&1  //grep da * 2> greplog4 1>&2 結(jié)果一樣
#查看greplog1會發(fā)現(xiàn)里面只有正常輸出內(nèi)容
#查看greplog2會發(fā)現(xiàn)里面什么都沒有
#查看greplog3會發(fā)現(xiàn)里面既有正常輸出內(nèi)容又有錯誤輸出內(nèi)容

三,/dev/null和/dev/zero

把/dev/null看作”黑洞”酵熙, 它等價于一個只寫文件轧简,所有寫入它的內(nèi)容都會永遠(yuǎn)丟失.,而嘗試從它那兒讀取內(nèi)容則什么也讀不到匾二。然而哮独, /dev/null對命令行和腳本都非常的有用。
像/dev/null一樣察藐, /dev/zero也是一個偽文件皮璧, 但它實際上產(chǎn)生連續(xù)不斷的null的流(二進(jìn)制的零流,而不是ASCII型的)分飞。 寫入它的輸出會丟失不見悴务, 而從/dev/zero讀出一連串的null也比較困難, 雖然這也能通過od或一個十六進(jìn)制編輯器來做到譬猫。

/dev/zero主要的用處是用來創(chuàng)建一個指定長度用于初始化的空文件讯檐,就像臨時交換文件。

#!/bin/bash
# 創(chuàng)建一個交換文件.
ROOT_UID=0 # Root 用戶的 $UID 是 0.
E_WRONG_USER=65 # 不是 root?
FILE=/swap
BLOCKSIZE=1024
MINBLOCKS=40
SUCCESS=0
# 這個腳本必須用root來運行.
if [ "$UID" -ne "$ROOT_UID" ]
then
echo; echo "You must be root to run this script."; echo
exit $E_WRONG_USER
fi
blocks=${1:-$MINBLOCKS} # 如果命令行沒有指定染服,


if [ "$blocks" -lt $MINBLOCKS ]
then
blocks=$MINBLOCKS # 最少要有 40 個塊長.
fi
echo "Creating swap file of size $blocks blocks (KB)."
dd if=/dev/zero of=$FILE bs=$BLOCKSIZE count=$blocks # 把零寫入文件.
mkswap $FILE $blocks # 將此文件建為交換文件(或稱交換分區(qū)).
swapon $FILE # 激活交換文件.
echo "Swap file created and activated."
exit $SUCCESS

四别洪,nohup和&

nohup命令可以將以忽略掛起信號的方式運行起來,被運行的程序的輸出信息將不會顯示到終端肌索。無論是否將nohup命令的輸出重定向到終端蕉拢,輸出都將附加到當(dāng)前目錄下的nohup.out文件中特碳。如果當(dāng)前目錄的nohup.out文件不可寫,輸出重定向到$HOME/nohup.out文件中晕换。如果沒有文件能創(chuàng)建或打開以用于追加午乓,那么command參數(shù)指定的命令不可調(diào)用。如果標(biāo)準(zhǔn)錯誤是一個終端闸准,那么把指定的命令寫給標(biāo)準(zhǔn)錯誤的所有輸出作為標(biāo)準(zhǔn)輸出重定向到相同的文件描述符益愈。
nohup是永久執(zhí)行的意思,而 & 是指在后臺運行夷家。就是指蒸其,用nohup運行的命令或程序可以永久的執(zhí)行下去,和用戶終端沒有關(guān)系库快,例如我們斷開ssh連接都不會影響他的運行摸袁。

  • 當(dāng)我們用 & 運行的程序是守護(hù)進(jìn)程時,我們斷開終端后這個守護(hù)進(jìn)程會繼續(xù)在后臺運行义屏。如果這個進(jìn)程不是守護(hù)進(jìn)程時靠汁,當(dāng)我們斷開終端后,這個進(jìn)程也跟著斷開停止運行了闽铐。
    由于使用nohup時蝶怔,會自動將輸出寫入nohup.out文件中,如果文件很大的話兄墅,nohup.out就會不停的增大踢星,這是我們不希望看到的,因此隙咸,可以利用/dev/null來解決這個問題沐悦。

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

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

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

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

注:其中node bin/www是項目node啟動

參考URL:

https://blog.csdn.net/wufaliang003/article/details/80275055
https://www.cnblogs.com/yanzibuaa/p/7808437.html
https://blog.csdn.net/u014284252/article/details/51784217
https://www.cnblogs.com/kcxg/p/11076461.html
https://blog.51cto.com/ibmcn/2348741
https://msd.misuland.com/pd/3255817963235708312
https://blog.csdn.net/cristik/article/details/82785847

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扎瓶,一起剝皮案震驚了整個濱河市所踊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌概荷,老刑警劉巖秕岛,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異误证,居然都是意外死亡继薛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門愈捅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遏考,“玉大人,你說我怎么就攤上這事蓝谨」嗑撸” “怎么了青团?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長咖楣。 經(jīng)常有香客問我督笆,道長,這世上最難降的妖魔是什么诱贿? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任娃肿,我火速辦了婚禮,結(jié)果婚禮上珠十,老公的妹妹穿的比我還像新娘料扰。我一直安慰自己,他們只是感情好焙蹭,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布晒杈。 她就那樣靜靜地躺著,像睡著了一般壳嚎。 火紅的嫁衣襯著肌膚如雪桐智。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天烟馅,我揣著相機(jī)與錄音,去河邊找鬼然磷。 笑死郑趁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的姿搜。 我是一名探鬼主播寡润,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舅柜!你這毒婦竟也來了梭纹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤致份,失蹤者是張志新(化名)和其女友劉穎变抽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氮块,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡绍载,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滔蝉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片击儡。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蝠引,靈堂內(nèi)的尸體忽然破棺而出阳谍,到底是詐尸還是另有隱情蛀柴,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布矫夯,位于F島的核電站名扛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茧痒。R本人自食惡果不足惜肮韧,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旺订。 院中可真熱鬧弄企,春花似錦、人聲如沸区拳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽樱调。三九已至约素,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笆凌,已是汗流浹背圣猎。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留乞而,地道東北人送悔。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像爪模,于是被迫代替她去往敵國和親欠啤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容