Команды bash, использующие Java Process Builder для копирования файла
Я использую следующий код Java для выполнения команд bash, при попытке скопировать файлы функция возвращает ненулевое значение, но я могу создавать файлы.
команда копирования: cp demo.txt /shared
вывод: 127
команда создания файла: echo 'sample text' > demo.txt
вывод: 0
public static int run(final String command)
{
String[] finalCommand;
Process process=null;
int temp=0;
finalCommand = new String[3];
finalCommand[0] = "bash";//"/usr/bin/ksh";
finalCommand[1] = "-c";
finalCommand[2] = command;
try {
final ProcessBuilder processBuilder = new ProcessBuilder(finalCommand);
processBuilder.redirectErrorStream(true);
process = processBuilder.start();
temp=process.waitFor();
}
catch (IOException e)
{
System.out.println( e.getMessage());
}
catch (InterruptedException e) {
System.out.println(e.getMessage());
}
return temp;
}
пожалуйста помоги
1 ответ
Одна из возможностей сбоя cp и работы echo связана с тем, что cp является внешней командой, а echo - встроенной командой.
Внешняя команда может быть найдена только по имени файла, если переменная среды PATH установлена и экспортирована.
Но в такой ситуации никогда не полагайтесь на PATH - используйте полный путь:
String command = "/bin/cp demo.txt /shared";
Также: у вас есть разрешение на запись в / общий доступ?