运行linux命令的Java程序,检查服务器是否正在运行

时间:2018-02-28 21:00:31

标签: java linux

我正在运行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`
  1. 先前已经运行但有时会被杀死的码头服务器进程
  2. 当前正在运行的jetty服务器进程
  3. 如何获取当前正在运行的进程的一条记录?我知道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中运行

0 个答案:

没有答案