我有一个Java函数,该函数获取服务器IP并检查该服务器上特定Windows服务的状态(正在运行或已停止)。在运行代码的服务器上检查服务状态时,它会在几秒钟内运行。但是,在检查同一域中另一台服务器(远程服务器)上的服务状态时,会花费很多时间。
是否有更好的方法来执行此任务?下面是我正在使用的功能。
public boolean checkService(String PSIP) {
try {
Process p = Runtime.getRuntime().exec("sc \\\\" + PSIP + " query smpolicysrv");
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
//System.out.println(line+"\n");
if (line.trim().startsWith("STATE"))
{
if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("1")) {
System.out.println("Stopped");
return false;
} else
if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("2"))
System.out.println("Startting....");
else
if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("3"))
System.out.println("Stopping....");
else
if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("4")) {
System.out.println("Running");
return true;
}
}
line = reader.readLine();
}
} catch (IOException e1) {}
return false;
}