“> /dev/null 2>&1” 的意思


在 Unix Like 环境下用 crontab 排程执行指令或 Shell Script 时, 很多时最后都会加上 “> /dev/null 2>&1”, 例如:

* * * * * /path/to/my-script.sh > /dev/null 2>&1

以下是对 “> /dev/null 2>&1” 分拆的解释:

>: 是重新导向, 例如将指令的执行结果写入到档案, 而以上的例子是将 /path/to/my-script.sh 的执行结果重新导向到 /dev/null.

/dev/null: /dev/null 在 Unix 或 Linux 就像黑洞, 会将任何导入的东西吃掉, 简单来说就是程式会照常执行, 但不会输出任何执行结果.

2: 系统将标准输入/输出分成三个, 分别是 stdin (fd 是 0), stdout (fd 是 1), 及 stderr (fd 是 2), 在这里 2 代表标准错误输出 stderr.

>: 重新导向.

&: 设定使用 fd 代号, 如果 “> dev/null 2>&1” 没有加上 “&”, 会视后面的 “1” 为档案名称, 而不是 fd.

1: fd 的标准输出 stdout.

简单来说, “> /dev/null 2>&1” 的意思, 是将左边程式的所有标准输出 stdout, 及标准错误输出 stderr 导向到 /dev/null, 即左边的程式只会执行, 而不会输出任何程式执行的结果。

5 Comments

  1. Jasper 03 February 2018
  2. JE 28 June 2019
  3. Chang Howard 16 February 2021
  4. R 08 December 2021
  5. Allan 04 July 2023

Leave a Reply