我有代码来检查Windows服务的状态,例如:
Runtime r = Runtime.getRuntime();
Process p = r.exec("net use \\"+server+"\ipc$ /user:"+domain+"\"+user+" "+password);
p = Runtime.getRuntime().exec("sc query "+service);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
if (line.trim().startsWith("STATE"))
{
if (line.trim().substring(line.trim().indexOf(":") + 1,line.trim().indexOf(":") + 4).trim().equals("1"))
System.out.println("Stopped");
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");
}
line = reader.readLine();
}
现在,我想编写代码来检查Linux,Unix进程,如上所述的服务的状态。
谢谢
您可以使用 linux 命令ps
进行交互(有关详细信息,请参阅man ps
)以查看进程。
对于服务,这是依赖于发行版的;许多现代发行版使用 systemd,有些仍然使用 init 脚本。您需要研究针对要支持的任何发行版管理服务的方式。