【问题标题】:'nohup 2>&1 >out' vs 'nohup >out 2>&1' [duplicate]'nohup 2>&1 >out' vs 'nohup >out 2>&1' [重复]
【发布时间】:2020-05-17 00:12:47
【问题描述】:

对我来说,以下两个 bash 命令会产生不同的结果:

# returns instantly
ssh localhost 'nohup sleep 5 >out 2>&1 &'
# returns after 5 seconds
ssh localhost 'nohup sleep 5 2>&1 >out &'

这很令人惊讶,因为以下两个 bash 命令产生了相同的结果:

# both return instantly
nohup sleep 5 >out 2>&1 &
nohup sleep 5 2>&1 >out &

为什么?

【问题讨论】:

  • 这个问题(为什么以及如何排序在重定向中很重要)也被回答为BashFAQ #55。关于问题或其答案的任何内容都不是 nohup 特有的。

标签: linux shell ssh nohup


【解决方案1】:

这个表格:

command >out 2>&1

... 取出标准并将其放入文件中。然后它接受标准错误并将其放在与标准输出相同的位置。 两个流都发送到一个文件中。

这个表格:

command 2>&1 >out

... 接受标准错误并将其放在标准输出中。然后它将发送到标准输出的内容发送到文件中。它向文件发送标准错误。

因此,在您的终端上,您正在后台处理任务并且提示会立即返回。使用 ssh 时,在第一种情况下,没有要显示的输出,因为所有内容都已发送到文件中。在另一种情况下,标准输出仍然可以显示应用程序尝试发送到标准错误的信息。

我的期望是 ssh 在第一种情况下立即返回,因为永远不会有任何输出。在第二种情况下,有一个开放的流可能会返回数据供您查看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多