如何取消暂停命令并将所有标准输出发送到日志文件

所以,通常用CTRL + Z来暂停命令,然后你可以执行“bg 1”或者什么都不能恢复命令,而且工作的很好。

如果我开始一个命令发送一堆输出到标准输出,但是我不希望在“解除暂停”命令后再看到这些东西。 我可以做类似“bg 1> file.log”吗?

这是基于这个答案 ,它有发送输出到/dev/null指令。

例如,要将正在运行的程序的输出发送到/tmp/file.log ,请执行以下操作:

从第二个terminal,使用ps来获取程序的进程ID。

inputtouch /tmp/file.log为你的输出创build一个空文件。

使用ps的进程标识键入gdb -p [PID]

(gdb)提示符下input这些命令:

 p dup2(open("/tmp/file.log",1),1) p dup2(open("/tmp/file.log",1),2) detach quit 

为了响应dup2命令,你应该看到“ $1 = 1 ”和“ $2 = 2 ”。 你应该在另一个terminal上看到输出停止,你应该能够cat或者tail -f的日志文件(或者反复使用ls -l ,看看大小的增加)。

现在,您可以使用CtrlZ暂停您的进程,并使用bg 1 (或任何作业编号恰好是)在后台恢复。