Как мне выполнить сценарий оболочки с java в той же оболочке, где файл jar выполняется во время выполнения? - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь запустить скрипт оболочки для монтирования USB, когда я обнаруживаю его с помощью моей программы java.

Моя программа / класс обнаружения USB работает, скрипт монтирования тоже работает, но при запуске скрипта через Java, он выполняется в другой оболочке и не монтирует USB для моего использования во время выполнения usb-файлов через java.

Мой скрипт такой:

#!/bin/bash
sudo mount /dev/sda1 /mnt/usb -o uid=pi,gid=pi
echo "USB drive mounted"

И моя java программа настолько сложна, что просто помещает ее сюда, но она существенно меняется, если в "/ dev / disk / by-id" были какие-либо изменения, и решает, была ли вставлена ​​флешка USB, а затем запускает сценарий оболочки для смонтировать его, он отображает «подключенный USB-накопитель», но когда я пытаюсь взаимодействовать с файлами в / mnt / usb /, он всегда пуст, когда я запускаю скрипт самостоятельно через консоль, он монтирует его в / mnt / usb и Я могу получить доступ к файлам

РЕДАКТИРОВАТЬ: Моя java команда для запуска оболочки выглядит так:

Process p = new ProcessBuilder("/usr/local/bin/usb-connect.sh").start();
BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) System.out.println(line);

usbfh.transferFiles();//transfers files from usb to device
}catch(IOException e){ e.printStackTrace}

Это дает мне ошибку:

mount: /mnt/usb: special device /dev/sda1 does not exist.

Что неверно с тех пор, как тот же скрипт выполняется через Приглашение cmd монтируется без ошибок

...