重定向/grep 现有 shell 的 STDOUT

jmd*_*din 3 process gnu-screen io-redirection files stdout

我运行了很多长时间运行的进程(模拟),将进度打印到STDOUT. 我偶尔会忘记重定向到STDOUT我可以重定向到的文件grep,而且通常太远而无法重新启动。

问题:在不停止进程的情况下,有没有办法可以连接到另一个进程STDOUT

这些总是在 OS X 10.7.3 上使用 ZSH 在 GNU 屏幕中运行。

小智 5

这里提到一个聪明的hack 它使用 GDB 附加到进程,一个名为的实用程序dupx包装了这个功能。

dupx 联机帮助页

Dupx 是一个简单的实用程序,用于重新映射已运行程序的文件。像 Bash 这样的 Shell 允许在程序启动时使用>, < -类似的语法轻松地进行输入/输出/错误重定向,例如:echo 'redirect this text' > /tmp/stdout将输出重定向echo/tmp/stdout.

然而,标准 shell 不提供为已经启动的进程重新映射(重定向)输出(或输入或错误)的能力。Dupx 试图通过使用dup(2)来自内部的系统调用来解决这个问题gdb(1)。Dupx 目前被实现为一个围绕gdb脚本的简单 shell 包装器。