Arv*_*ind 2 java shell asynchronous
我想从 Java 程序中异步运行 shell 脚本——即在 java 程序开始执行该 shell 脚本之后,它会继续执行其他操作——并且仅当 shell 脚本返回对其的响应时才执行一些进一步的工作.. 即它不会显式停止并等待 shell 脚本的响应。
这可能/可行吗?我如何实现这样的功能?
基本上我将使用单个服务器来监视多个服务器,该服务器将管理所有这些服务器 - 为此它将在每个服务器上运行 shell 脚本...因为有很多服务器,并且在 java 中建议不要使用线程数超过CPU核心数...因此我需要一个解决这个问题的方法,它不依赖于线程(因为线程限制)...这样我就可以同时(或几乎同时)启动许多这样的shell脚本,而无需等待这些脚本响应之一(因为等待会影响其他 shell 脚本命令的处理)...另一个问题.. shell 命令需要在本地计算机或远程计算机上调用,并且需要来自两种类型的响应shell脚本执行(即本地执行和远程执行)...
你尝试过什么吗?
你可以尝试这样的事情:
ProcessBuilder builder = new ProcessBuilder("your command to launch script");
Process process = builder.start();
Run Code Online (Sandbox Code Playgroud)
默认情况下,它不会等待该过程完成,因此您接下来可以执行代码。
如果您想在流程完成后进行一些处理,您可以尝试:
int exitVal = process.waitFor();
Run Code Online (Sandbox Code Playgroud)