拦截正在运行的Java程序的输出

Hen*_*idv 2 java

是否有可能从已经运行的Java程序中获取/拦截输出?

这是我的情况:我正在运行一个需要几个小时才能完成的程序.所以我启动它,让计算机完成它的工作.我可以使用SSH登录运行该程序的计算机并查看它与ps一起运行,但我想拦截写入控制台的输出.

有没有办法做到这一点?

我需要提供额外信息吗?

Uku*_*kit 6

screen会话中启动应用程序,从会话中分离,稍后您可以ssh并重新连接以查看进度.以下是有关使用屏幕的一些信息.

另一种选择是将标准输出和标准错误重定向到文件,并使用类似的tail方式查看其内容.例:my_program &> /tmp/output

好吧,我刚刚意识到我有点偏离主题,因为我处理了你必须提前思考的案例.现在,如果想要从正在运行的进程中获取它,您可以使用gdb.

gdb -p process_id
(gdb) p close(1)
$1 = 0
(gdb) p creat(“/tmp/output?, 0600)
$2 = 1
(gdb) q
Run Code Online (Sandbox Code Playgroud)

这将输出/tmp/output和再次,你可以用来tail交互地看到它.