final ProcessBuilder processBuilder = SystemUtils.IS_OS_WINDOWS
? new ProcessBuilder("java", processKey, activeProfilesArg, "-jar", file.getFileName())
: new ProcessBuilder("nohup", "java", processKey, activeProfilesArg, "-jar", file.getFileName(), "&");
processBuilder.directory(directory.toFile());
//...redirect output to log file
log.info("Executable file will run with command: {}", processBuilder.command());
final Process process = processBuilder.start();
if (process.isAlive()) {
log.info("Executable file was started with PID {}", process.pid());
} else {
log.error("Executable file start failed with code {}", process.exitValue());
throw new OperationException("Failed with code " + process.exitValue());
}
возвращает 252. Но этот pid отсутствует в выводе команды ps. Process.isAlive() возвращает true, но пульса от jar тоже нет, файл журнала пуст. Если основное приложение работает на локальной машине, без контейнера, то всё работает, jar-файл работает. Если запустить файл jar вручную в контейнере через bash, он работает. Почему такое поведение и как это исправить?
Основное приложение SpringBoot работает в Docker-контейнере. Это приложение запускает jar через ProcessBuilder: [code] final ProcessBuilder processBuilder = SystemUtils.IS_OS_WINDOWS ? new ProcessBuilder("java", processKey, activeProfilesArg, "-jar", file.getFileName()) : new ProcessBuilder("nohup", "java", processKey, activeProfilesArg, "-jar", file.getFileName(), "&");
processBuilder.directory(directory.toFile());
//...redirect output to log file
log.info("Executable file will run with command: {}", processBuilder.command());
final Process process = processBuilder.start();
if (process.isAlive()) { log.info("Executable file was started with PID {}", process.pid()); } else { log.error("Executable file start failed with code {}", process.exitValue()); throw new OperationException("Failed with code " + process.exitValue()); } [/code] [code]process.pid()[/code] возвращает 252. Но этот pid отсутствует в выводе команды ps. Process.isAlive() возвращает true, но пульса от jar тоже нет, файл журнала пуст. Если основное приложение работает на локальной машине, без контейнера, то всё работает, jar-файл работает. Если запустить файл jar вручную в контейнере через bash, он работает. Почему такое поведение и как это исправить?