【发布时间】:2016-11-21 14:57:15
【问题描述】:
在以下 bash 脚本中,我不明白 2 的含义:
function kill_process()
{
kill -9 $(lsof -i:$1 -t) 2> /dev/null
}
我可以看到它正在将输出重定向到空设备,但是 2 是什么意思?
【问题讨论】:
标签: bash
在以下 bash 脚本中,我不明白 2 的含义:
function kill_process()
{
kill -9 $(lsof -i:$1 -t) 2> /dev/null
}
我可以看到它正在将输出重定向到空设备,但是 2 是什么意思?
【问题讨论】:
标签: bash
Bash 中的N> 语法意味着将文件描述符重定向到其他地方。 2 是stderr 的文件描述符,本例将其重定向到/dev/null。
这意味着简单地说:忽略命令的错误输出。例如,如果kill 无法停止进程,因为它不存在,或者因为当前用户没有这样做的权限,它会在stderr 上打印消息。通过将stderr 重定向到/dev/null,您可以有效地抑制这些消息。
【讨论】:
> 前面的数字告诉 shell 将哪个 文件描述符 重定向到文件中。如果您不设置该数字,则默认为 1 - 这与 standard output 相同,简称 stdout,大多数命令会将其输出写入其中。但是,终端中的程序实际上默认有两个输出通道,另一个是标准的错误。 stderr 的目的是允许将错误发送到终端,即使标准输出被重定向到文件或管道;他们都默认进入终端。但是你可以根据需要重定向stderr,这就是这段代码所做的,因为stderr的文件描述符编号是2。
【讨论】:
我认为是对 STDERR 的重定向。 所有错误都重定向到 /dev/null
【讨论】: