#java #bash #docker #shell #sh
#java #bash #docker #оболочка #sh
Вопрос:
Все эти строки отлично работают без docker на Mac, но не работают в среде DOCKER.
try {
log.info("FileSortHelper.sortResultFile start the file name is {}", resultFilePath);
final String[] cmd = {
FileServiceConstants.BASH, FileServiceConstants.SORTING_SCRIPT_PATH.toString(),
resultFilePath };
log.info("FileSortHelper.sortResultFile Command run {}",
cmd[0] " " cmd[1] " " cmd[2]);
final long startTime = System.currentTimeMillis();
final Process process = runtime.exec(cmd);
process.waitFor();
bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream(), Charset.defaultCharset()));
MDC.put(MdcConstants.PERF_MATRIX_TIME_TAKEN_FOR_SORTING_RESULT_FILE,
String.valueOf(System.currentTimeMillis() - startTime));
final StringBuilder responseFromScript = new StringBuilder();
// Collect all the echo statement and print in logs
while (bufferedReader.ready()) {
responseFromScript.append(bufferedReader.readLine());
}
log.info("FileSortHelper.sortResultFile Response received from script: {}",
responseFromScript);
log.info("FileSortHelper.sortResultFile Exit code received from script: {}",
process.exitValue());
}
Ниже приведена другая комбинация, которую я тестировал. Извините, если это очень простой вопрос.
final String[] cmd ={"sh", SCRIPT_PATH.toString(), resultFilePath};
//Error cases received response : exit status 2
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("bash", "-c", DST_PATH.toString(), resultFilePath);
//Error cases received response : exit status 2
final Process process = Runtime.getRuntime().exec(cmd);
//Success cases received response : exit status o
processBuilder.command("bash", DST_PATH.toString(), resultFilePath);
Комментарии:
1. Что вы подразумеваете под сбоем? Вы получаете какую-либо ошибку? Если да, пожалуйста, скопируйте сообщение об ошибке.
2. process.exitValue() = 2 Я получаю