繁体   English   中英

用于Java的Linux shell作业api

[英]Linux shell jobs api for Java

Java中是否有可用于查询作业的API? 换句话说,我正在为“作业”命令寻找api,以便我可以了解作业的状态( runningstopped等)。 理想情况下,我希望能够提交工作,但我认为通过调用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM