运维、开发人员在crond添加计划任务或nohup 脚本中 经常可以看到 >/dev/null 2>&1,估计很多人和我一样并不理解其含义,想要真正的理解它,需要知道文件描述符的三种类型,如下
::: hljs-center
类型 | 文件描述符 | 重定向符号 | 位置 | 数字含义 |
---|---|---|---|---|
标准输入 (stdin) | 0< 或 0<< | /dev/stdin -> /proc/self/fd/0 | 0代表:/dev/stdin | |
标准输出 (stdout) | 1 | 1> 或 1>> | /dev/stdout -> /proc/self/fd/1 | 1代表:/dev/stdout |
标准错误输出(stderr) | 2 | 2> 或 2>> | /dev/stderr -> /proc/self/fd/2 | 2代表:/dev/stderr |
:::
使用习惯说明 |
---|
标准输入重定向"0<"或"0<<"等同于"<"或"<<",我们在平时使用时一般都省略了"0" |
标准输出重定向"1>"或"1>>"等同于">"或">>",我们在平时使用时一般都省略了“1” |
通过上面的表格,我们将>/dev/null 2>&1拆开来看就容易理解的多 ==>/dev/null将标准输出重定向到空设备,即我们常说的“黑洞”== ==2>表示错误输出== ==&表示等同的意思== ==1标准输出== ==2>&1就表示错误输出重定向等同于标准输出== ==所以>/dev/null 2>&1就表示将标准输出及错误输出全部重定向到“黑洞”,这么做可以有效的防止结果输出到控制台,以及磁盘inode节点被写满。==