Abe*_*ede 5 java shell logging iostream process
根据:
我认为这是可能的,但我有以下问题。
String TailCommand = "tail -f /path/PATH.txt| grep (...)";
Runtime r = Runtime.getRuntime();
Process p = r.exec(TailCommand);
//handle buffer
while (running) {
// handle output
}
Run Code Online (Sandbox Code Playgroud)
进程 p 终止。它适用于不像“top”或“tail -f”那样没有持续更新的命令。
我想知道我是否错过了什么,有一些缓冲区限制还是什么?我正在使用 Eclipse,但我想这应该不会对进程行为产生任何影响。
事实上,也许还有另一种简单的方法可以解决我错过的问题。我使用“tail -f”,因为我必须分析不断附加的非常胖(一些 GB)的日志,并且不打算打开它并读取整个文件。我只需要控制附加行。但是我没有找到合适的尾部实现
提前致谢。
您无法从 java 内部执行管道命令。
如果您想要管道输出,请像这样执行“/bin/sh”:
String tailCommand = "/bin/sh -c 'tail -f /path/PATH.txt| grep (...)'";
Run Code Online (Sandbox Code Playgroud)
此外,您的 java 程序必须足够快地消耗进程的输出,以便其缓冲区不会溢出。
您可能需要阅读这篇文章When Runtime.exec() won't,了解尝试从 Java 执行进程时的常见陷阱的描述。
| 归档时间: |
|
| 查看次数: |
2139 次 |
| 最近记录: |