是否可以从已运行的 Java 程序中获取/拦截输出?
这是我的情况:我正在运行一个需要几个小时才能完成的程序。所以我启动它,让计算机完成它的工作。我可以使用 SSH 登录运行该程序的计算机并查看它使用 ps 运行,但我想拦截写入控制台的输出。
有什么办法吗?
我需要提供额外的信息吗?
最佳答案
在 screen
session 中启动应用程序,从 session 中分离,稍后您可以通过 ssh 登录并重新连接以查看进度。
这是关于 using screen 的一些信息.
另一种选择是将标准输出和标准错误重定向到一个文件,并使用类似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
这会将输出放入 /tmp/output
,您可以使用 tail
以交互方式查看它。
关于java - 拦截正在运行的 Java 程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773985/