在项目中需要在java中查询相关进程信息,故需要在java中执行shell脚本,ps -ef | grep java |grep xxx
/**
* <获取具体服务的在线状态>
*
* @param serviceName 服务名
* @return 服务状态
* @throws
*/
private Boolean getServiceState(String serviceName)
{
LOGGER.info("serviceName is {}.", serviceName);
Boolean state = false;
String[] cmds = {"/bin/sh", "-c", "ps -ef | grep java | grep " + serviceName};
Reader reader = null;
BufferedReader bReader = null;
InputStream inputStream = null;
List<String> cmdOutput = new ArrayList<>();
String line = null;
try
{
Process process = Runtime.getRuntime().exec(cmds);
inputStream = process.getInputStream();
reader = new InputStreamReader(inputStream);
bReader = new BufferedReader(reader);
while ((line = bReader.readLine()) != null)
{
cmdOutput.add(line);
}
LOGGER.info("cmdoutput is {}.", cmdOutput);
if (null != cmdOutput && cmdOutput.size() == 2)
{
state = true;
}
process.waitFor();
return state;
}
catch (Exception ex)
{
LOGGER.error("get service state error.");
return state;
}
finally
{
try
{
if (null != inputStream)
{
inputStream.close();
}
if (null != reader)
{
reader.close();
}
if (null != bReader)
{
bReader.close();
}
}
catch (IOException e)
{
LOGGER.error("close inputstream error.");
return state;
}
}
}