![是否可以在 bg 之后停止命令的输出?](https://linux22.com/image/119708/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%20bg%20%E4%B9%8B%E5%90%8E%E5%81%9C%E6%AD%A2%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA%EF%BC%9F.png)
假设这种情况
wget http://file
wget 开始下载文件。
我把它放在后台。
^Z
bg
该命令进入后台。
但它的输出仍然在控制台上——如果控制台仍然打开的话。
是否可以停止命令的输出?
Wget只是一个例子;考虑一个写入大量输出的命令。
在控制台,我知道可以执行以下操作bg
,然后关闭终端并打开另一个终端,但是如果我只有一个可用终端并且没有伪终端怎么办?
答案1
您的意思是您想让 wget(或其他一些 cmd)在后台运行而不向控制台输出消息吗?如果这是这个问题,你可以尝试redirection
$ wget http://file > /dev/null
上面的 cmd 将重定向到,stdout
除了/dev/null
错误消息之外,您不会看到任何消息。如果您也不想看到错误消息,请尝试此操作
$ wget http://file 1>/dev/null 2>&1
你可以googleredirection
一下更详细的信息。
答案2
这是一个实际重定向命令输出的解决方案尽管它正在运行:https://superuser.com/questions/732503/redirect-stdout-stderr-of-a-background-job-from-console-to-a-log-file
对于在使用终端的日常场景中更有用的解决方案,您可以 在后台wget -o log http://file &
运行并将其输出写入而不是您的终端。当然,在这种情况下,您根本不会看到任何输出(即使您在前台运行),但您可以随着输出的增长来查看输出。wget
log
wget
tail -f log