有没有一种方法来防止后台任务覆盖shell中的命令行输出?

我希望能够在shell的后台运行任务,而不会将其输出到stdout或stderr覆盖底部的命令行。 通常我需要运行其他命令来与后台进程交互,并希望从同一个shell进行操作,而无需打开另一个terminal或使用多路复用器来拆分terminal,如屏幕。

理想情况下,会有一些设置,我只是不知道(我通常使用bash或ksh),但新的或不同的shell或脚本将罚款由我。

我接受任何build议,并感谢任何帮助,谢谢。

编辑:谢谢你所有的答案,但我的问题有点不清楚。 我仍然需要观察后端任务的输出,我只是希望它不会覆盖任何我可能在命令行input的新命令。 理想情况下,后台程序的输出将显示在shell的底部,而我可以自由地构build新的命令。

这与使用水平分割运行屏幕类似,其中底部窗口只有1-2行高,但使用屏幕对于我的目的有以下缺点:

  • 我不需要/希望这些进程能够在我的注销之后继续存在
  • 它需要额外的一两个命令来设置(即使在.screenrc文件中完成拆分和窗口大小)
  • 我希望能够使用shell的作业控制命令,而无需在屏幕窗口之间切换(即作业,bg,fg,至less在bash的情况下kill%1)

再次感谢您的帮助,这是我的第一个问题,我已经被答案的速度和数量所吓倒了!

在Bash&ksh中,你可以通过在命令后附加1>/dev/null来使所有的stdout消失。
对于csh和tcsh,它是$1>/dev/null

 mycommand > /dev/null 2>&1 

这会将stderror(2)redirect到标准输出(1)到/ dev / null

从'nohup'维基百科页面展开已经给出的答案….

 nohup ./myprogram > foo.out 2> foo.err < /dev/null & 

http://en.wikipedia.org/wiki/Nohup

如果你需要这样做,nohup允许进程在你终止shell之后继续。 “>”和“<”将输出redirect到“文件”,无论该文件是什么。 在一些例子中,这个文件只是/ dev / null。 '&'指示shell将进程置于后台并继续接受input,因为OP可能已经知道了。

根据系统pipe理员对安全性的严格程度,您可以使用“at”运行命令。

  $ at now date id ^D $ 

当然,输出(如果有)将通过电子邮件发送给您。