我正在运行Java代码来检查Jetty服务器是否在Linux中运行。我试图这样做的方式如下
Process p1 = Runtime.getRuntime().exec(new String[] { "ps", "-ef" });
InputStream input = p1.getInputStream();
Process p2 = Runtime.getRuntime().exec(new String[] { "grep", "/xxxxx/xxxxx/xxxxx/xxxxx/jetty/start.jar"});
OutputStream output = p2.getOutputStream();
IOUtils.copy(input, output);
output.close(); // signals grep to finish
List<String> result = IOUtils.readLines(p2.getInputStream());
System.out.println(result);
上面代码的问题在于它给了我两个这样的输出:
xxxxx 1111 44444 0 11:22 pts/1 00:00:00 grep --color=auto /xxxxx/xxxxx/xxxxx/xxxxx/jetty/start.jar
xxxxx 22222 1 2 Oct21 ? 04:03:55 xxxxxx xxxxxxx xxxxxxx /xxxxx/xxxxx/xxxxx/xxxxx/jetty/start.jar`
如何获取当前正在运行的进程的一条记录?我知道linux中的命令只将输出的进程作为输出,但在集成到我的Java代码中时会失败。
寻找能够提供正在运行的进程的解决方案,并且还可以运行Java或Java代码,我可以在其中运行类似ps -ef | grep /xxxxx/xxxxx/xxxxx/xxxxx/jetty/start.jar | grep -v grep
或者
ps -fC java | grep /xxxxx/xxxxx/xxxxx/xxxxx/jetty/start.jar在linux中运行但不在Java中运行