我希望能够在shell的后台运行任务,而不会将其输出到stdout或stderr覆盖底部的命令行。 通常我需要运行其他命令来与后台进程交互,并希望从同一个shell进行操作,而无需打开另一个terminal或使用多路复用器来拆分terminal,如屏幕。
理想情况下,会有一些设置,我只是不知道(我通常使用bash或ksh),但新的或不同的shell或脚本将罚款由我。
我接受任何build议,并感谢任何帮助,谢谢。
编辑:谢谢你所有的答案,但我的问题有点不清楚。 我仍然需要观察后端任务的输出,我只是希望它不会覆盖任何我可能在命令行input的新命令。 理想情况下,后台程序的输出将显示在shell的底部,而我可以自由地构build新的命令。
这与使用水平分割运行屏幕类似,其中底部窗口只有1-2行高,但使用屏幕对于我的目的有以下缺点:
再次感谢您的帮助,这是我的第一个问题,我已经被答案的速度和数量所吓倒了!
在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 $
当然,输出(如果有)将通过电子邮件发送给您。