2015-03-25 206 views

回答

0

您可以使用shell重定向或通过程序(如script)捕获输出 - 前提是程序是以“常规方式”启动的。 (可以通过特殊设备写入其他终端,并给予适当的权限)。

一个假定您已经了解重定向输出,例如,

foo >bar 

,但有一些情况下,例如,继续写终端GUI程序。

不用担心通过重定向输出来干扰程序,我会运行script并在启动script的shell中启动程序。然后,从该shell写入的任何内容都将转到typescript文件(默认情况下)。另一方面,终端窗口的GUI程序可能/可能不可配置为允许使用可捕获输出的启动脚本对其进行自定义。

如在How to open process again in linux terminal?中所述,可以使用给定其进程ID的strace附加到正在运行的进程。使用7 Strace Examples to Debug the Execution of a Program in Linux中描述的-e选项,您可以提取write调用。

记住与strace从写非打印字符转换为可打印文本,以及显示strace参数的功能到一个固定的限制(你可以调整使用-s选项)。 strace的输出可以被重定向(并且不需要在与原始过程相同的终端上运行)。

+0

谢谢。我忘了提及我无法终止/重启进程,因为这会中断很多正在运行的服务。 – astralmaster 2015-03-25 11:49:43

+0

我更想过为strace日志写入系统调用。 – astralmaster 2015-03-25 11:50:34