[英]Linux shell jobs api for Java
Java中是否有可用于查询作业的API? 换句话说,我正在为“作业”命令寻找api,以便我可以了解作业的状态( running
, stopped
等)。 理想情况下,我希望能够提交工作,但我认为通过调用shell并传递&
可以轻松实现
我认为你要找的是java.lang.process,但它实际上不能返回状态(运行,停止等),而只能返回输出(err,std)或退出值。
可以通过ProcessBuilder / Runtime apis调用Shell命令。 除此之外,没有java api。 (我怀疑甚至存在C api。如果是这样,你可以使用JNI和控制过程)
如果您有/ develop - shell脚本来处理Job,那么您可以使用java.lang.process apis来执行该shell脚本,看看它是否可以满足您的需求。 您还可以将参数与参数一起传递。 以下是代码片段可能对您有用。
import java.io.IOException;
import java.io.InputStream;
public class MYProcess
{
int startProcess()
{
String cmd = "/opt/test/bin/mystart.sh"
// create a process for the shell
ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd);
// use this to capture messages sent to stderr
pb.redirectErrorStream(true);
Process shell = null;
int shellExitStatus =-1;
try
{
shell = pb.start();
}
catch (IOException e)
{
e.printStackTrace();
}
InputStream shellIn = shell.getInputStream();
try
{
shellExitStatus = shell.waitFor();
//logger.info("call exit status:" + shellExitStatus);
//logger.info("If exit status is not zero then call is not successful. Check log file.");
}
catch (InterruptedException e)
{
//logger.error("error while call" + e);
e.printStackTrace();
} // wait for the shell to finish and get the return code
return shellExitStatus;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.