在crond計划任務、nohup中我們經常可以看到>/dev/null 2>&1,但是很多人並不理解其含義,想要真正的理解它,首先我們需要知道文件描述符的三種類型。
類型 | 文件描述符 | 重定向符號 | 位置 |
---|---|---|---|
標准輸入(stdin) | 0 | 0<或0<< | /dev/stdin -> /proc/self/fd/0 |
標准輸出(stdout) | 1 | 1>或1>> | /dev/stdout -> /proc/self/fd/1 |
錯誤輸出(stderr) | 2 | 2>或2>> | /dev/stderr -> /proc/self/fd/2 |
標准輸入重定向"0<"或"0<<"等同於"<"或"<<",我們在平時使用時一般都省略了"0" | |||
標准輸出重定向"1>"或"1>>"等同於">"或">>",我們在平時使用時一般都省略了“1” |
通過上面的表格,我們將>/dev/null 2>&1拆開來看就容易理解的多
>/dev/null將標准輸出重定向到空設備,即我們常說的“黑洞”
2>表示錯誤輸出
&表示等同的意思
1標准輸出
2>&1就表示錯誤輸出重定向等同於標准輸出
所以>/dev/null 2>&1就表示將標准輸出及錯誤輸出全部重定向到“黑洞”,這么做可以有效的防止結果輸出到控制台,以及inode節點被寫滿。