2016-06-06 2 views
-2

Я хочу разработать веб-приложение (Java), которое проверяет состояния служб всех наших приложений.Как проверить состояние службы, запущенной на машине Linux, используя JAVA

Может кто-нибудь помочь мне о том, как написать Java-код, чтобы сделать это для службы, работающей на Linux машине (например, сервис TOMCAT)

У меня есть 4 Linux серверов, которые имеют службы, работающие на все сервера. Итак, я хотел бы связать их с java и получить статус процесса.

+0

что вы пытались до сих пор ? – Abhishek

+0

Не знаю, с чего начать, поскольку я не знаю, как читать процесс linux в java.So, Переходя по ссылкам google – saivinod

ответ

0
public static void main(String args[]) throws JSchException, InterruptedException, IOException { 
     JSch objJSch = new JSch(); 
     Session objSession = objJSch.getSession("userName", "ip_address"); 
     objSession.setPassword("password"); 
     objSession.setConfig("StrictHostKeyChecking", "no"); 
     System.out.println("Establishing Connection..."); 
     objSession.connect(); 
     System.out.println("Connection established."); 
     Channel objChannel = objSession.openChannel("exec"); 
     ((ChannelExec) objChannel).setCommand("ps aux"); 
     InputStream in = objChannel.getInputStream(); 
     objChannel.connect(); 
     String s; 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     while ((s = br.readLine()) != null) 
      System.out.println(s); 
     System.out.println("disconnecting..."); 
     objChannel.disconnect(); 
     objSession.disconnect(); 
     System.out.println("disconnected."); 
} 

Библиотека JSch позволяет подключить ssh. Вы можете пройти через другие примеры в следующем link Добавьте следующую зависимость еще скачать и поставить банку на своем пути:

<dependency> 
     <groupId>com.jcraft</groupId> 
     <artifactId>jsch</artifactId> 
     <version>0.1.53</version> 
</dependency> 

Вы можете повторить процесс «N» количество серверов внутри цикла. Вышеприведенный код напечатает следующий результат: (в зависимости от os. Я использую ubuntu, простите меня из-за странного дизайна таблицы, не смог отформатировать его должным образом).

|| USER || PID ||% CPU ||% MEM || VSZ || RSS || TTY || STAT || START || TIME || COMMAND ||

|| корень || 2202 || 0.0 || 0.0 || 144768 || 6860 ||| || S || 04: 57 || 0: 00 || tint2 ||

.... // следующая строка

.... // следующая строка

В столбце STAT означает состояние приложения. Ниже приведены вероятные состояния приложения:

D источник бесперебойного сна (обычно IO)

R бег или работоспособной (по очереди запуска)

S прерываемого сна (ожидание события для завершения)

Т остановлен, либо с помощью управляющего сигнала задания или потому, что в настоящее время прослеживается

W поискового вызова (не действует, так как ядро ​​2.6.xx)

X мертвых (никогда не следует рассматривать)

несуществующей («зомби») процесс Z, завершается, но не пожинают его родительским

(выше информации, взятой из link)

+1

Это не то, о чем попросил OP. – Seelenvirtuose

+0

@Seelenvirtuose вы можете прояснить? это поможет мне улучшить мой ответ. – Abhishek

+0

Я хотел бы подключиться к удаленному серверу linux и получить статус процесса с помощью java. Как у меня несколько Linux-машин – saivinod