在Linux的bash中,
我知道如何启动一个长时间运行的进程并将其发送到后台。
例如run.sh
,然后按Control+Z
,然后输入bg 1
有时我想继续做其他工作,但这个后台流程会继续打印到我的Putty
conssole
- 这很烦人。
我知道我可以启动run.sh &> /tmp/run.sh.log
因此将所有输出都输出到/tmp/run.sh.log
但有时我忘了这样做。
如何阻止后台进程从打印到我的控制台?
答案 0 :(得分:1)
如果您已经启动了该过程并希望阻止其打印到stdout
,同时仍然保持其运行,则可以使用:
stty tostop
当您提供stty
tostop
参数时,它会停止尝试写入stdout
的后台进程
要让流程再次写入,您可以使用fg
。
可以找到原始来源here
答案 1 :(得分:0)
Control + Z正在停止你的工作(就像暂停它一样),这就是你没有看到输出的原因。 fg 1让它重新获得 禁止所有消息将所有内容重定向到/ dev / null
./your_script.sh 2>&1 &