/dev/null 2>1 详解
今天一個(gè)朋友突然在自己的維護(hù)的Linux中, /var/spool/cron/root 中看到了以下的內(nèi)容:
30 19 * * * /usr/bin/**dcon.sh >?/dev/null 2>&1
59 23 * * 1-7 /home/s**-log/squid-log.renew >?/dev/null 2>&1
50 1 * * 1-7 /usr/local/src/**log.sh >?/dev/null 2>&1
20 2 * * 1-7 /home/sq**-log/**log >?/dev/null 2>&1
30 2 * * 1-7 /home/sq**-log/**log.01
30 22 * * * /bin/**sync >?/dev/null 2>&1
00 8 * * 1-7 /home/**-log/rmcore >?/dev/null 2>&1
00 16 * * 1-7 /home/**-log/rmcore >?/dev/null 2>&1
他問(wèn)我為什么要用?/dev/null 2>&1?這樣的寫法.這條命令的意思是將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出全部重定向到/dev/null中,也就是將產(chǎn)生的所有信息丟棄.下面我就為大家來(lái)說(shuō)一下,?command > file?2>file??與command >?file 2>&1?有什么不同的地方.
??????首先~command >?file 2>file?的意思是將命令所產(chǎn)生的標(biāo)準(zhǔn)輸出信息,和錯(cuò)誤的輸出信息送到file 中.command??> file 2>file?這樣的寫法,stdout和stderr都直接送到file中, file會(huì)被打開(kāi)兩次,這樣stdout和stderr會(huì)互相覆蓋,這樣寫相當(dāng)使用了FD1和FD2兩個(gè)同時(shí)去搶占file 的管道.
??????而command >file 2>&1?這條命令就將stdout直接送向file,?stderr?繼承了FD1管道后,再被送往file,此時(shí),file 只被打開(kāi)了一次,也只使用了一個(gè)管道FD1,它包括了stdout和stderr的內(nèi)容.
??????從IO效率上,前一條命令的效率要比后面一條的命令效率要低,所以在編寫shell腳本的時(shí)候,較多的時(shí)候我們會(huì)用command > file 2>&1?這樣的寫法.
?
總結(jié)
以上是生活随笔為你收集整理的/dev/null 2>1 详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SecureCRT设置背景颜色和目录(文
- 下一篇: nginx配置文件中location与r