从http://www.gnu.org/software/coreutils/manual/html_node/nohup-inplication.html
nohup 运行给定的命令并忽略挂断信号,以便该命令可以在您注销后继续在后台运行。
概要:
nohup command [arg]...
如果标准输入是终端,请将其重定向,以便终端会话不会错误地认为命令要使用该终端。
为什么我们需要这样做:
使替代文件描述符不可读,以便错误地尝试从标准输入读取的命令可能会报告错误。
文件中的重定向标准输入不是由 完成的吗
nohup command [arg]... 0<myfile
?为什么0>/dev/null
?此重定向是 GNU 扩展;可以使用旨在移植到非 GNU 主机的程序
nohup command [arg]... 0>/dev/null
。
答案1
想象一下您正在尝试使用 nohup 运行一个复杂的脚本。您可以通过将 stdin 重定向到无法读取的文件描述符来检测它是否尝试读取 stdin。看这两个例子:首先0</dev/null
:
rm nohup.out
nohup sh -c 'head -1' 0</dev/null
echo $?
cat nohup.out
nohup.out 文件为空,脚本的返回码 ( $?
) 为 0,即正常,因为脚本刚刚读取文件结尾。现在尝试使用0>/dev/null
ie 0 打开相同的脚本仅输出:
rm nohup.out
nohup sh -c 'head -1' 0>/dev/null
echo $?
cat nohup.out
这给出了 nohup.out 中的错误消息
head: error reading 'standard input': Bad file descriptor
退出代码为1,失败。这可能对您更有用。您还可以通过使用以下命令关闭 stdin 来获得相同的效果0<&-
:
rm nohup.out
nohup sh -c 'head -1' 0<&-
echo $?
cat nohup.out