【问题标题】:How to deal with output from a background linux task如何处理后台linux任务的输出
【发布时间】:2013-01-31 16:10:08
【问题描述】:

我有一个任务是不断回显信息。

例如,如果您执行 git clone 并且希望将该任务发送到后台(通过使用 & 符号)

git clone https://github.com/mrdoob/three.js.git &

那么 git clone 操作就是不断刷新屏幕 git clone 进程的新百分比,即:

Receiving objects:  47% (22332/47018), 92.53 MiB | 480 KiB/s   1410/47018), 7.18 MiB | 185 KiB/s
Receiving objects:  53% (24937/47018), 99.40 MiB | 425 KiB/s   1410/47018), 7.18 MiB | 185 KiB/s 

所以我不能继续在前台执行其他操作,因为这些更新阻止我看到我正在尝试编写的内容。

你能告诉我如何有效地将这样一个冗长的任务发送到后台吗?

非常感谢!

【问题讨论】:

    标签: linux bash command-line background-process


    【解决方案1】:

    您可以让进程将其输出写入文件(如果您需要稍后查看),如下所示:

    git clone https://github.com/mrdoob/three.js.git >output.txt &
    

    或像这样完全丢弃输出:

    git clone https://github.com/mrdoob/three.js.git >/dev/null &
    

    编辑:

    您还可以通过将& 替换为2>&1 & 来在上述任一选项中包含发送到stderror 的任何错误消息

    【讨论】:

    • 非常感谢您的回答!这正是我一直在寻找的。这个命令多漂亮啊!
    【解决方案2】:

    其他答案都不错,不过你也可以用:

    git clone -q ...
    

    See here for details.

    【讨论】:

    • 如果 git 是你想像这样隐藏在后台的唯一命令,这是一个很好的选择。为此 +1,但值得注意的是,重定向对任何命令都很有用,而不仅仅是 git。
    • 当然,重定向是最通用的。但我个人不喜欢重定向只是为了丢弃输出。几乎所有(合理的)具有此类进度指示器的命令都有一个“安静”选项。
    • 公平点。只是把它扔给任何和我们一起阅读的人。
    • 好主意,非常感谢!我接受另一个答案,因为那个答案与我提出的问题更相关。再次感谢!
    【解决方案3】:

    重定向其标准输出:

    git clone https://github.com/mrdoob/three.js.git > /dev/null &
    

    或使用命令的适当详细选项(在本例中为 git)

    【讨论】:

      【解决方案4】:

      如果你特别想把它放在后台,你可以在命令的末尾附加一个 & 符号 (&),或者在它运行时使用 ctrl+z 然后命令 'bg' 来运行它的背景。 要将其恢复,请使用jobs 列出您的工作,然后使用fg %{job #} 将其恢复。 希望这有助于并在这种独特的情况下起作用

      【讨论】:

      • 他已经在后台得到了这份工作。他希望它停止将输出发送到他在前台做其他事情的终端。
      • 我的误会。所有输出的重定向听起来很理想。 :\
      猜你喜欢
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 2021-11-22
      • 2019-10-26
      相关资源
      最近更新 更多