У меня есть сценарий оболочки очистки, который предназначен для удаления всех пространств клавиш Кассандры, кроме системных клавиш.Я могу выполнить сценарий оболочки, используя java processbuilder, но мой сценарий указывает на неправильное расположение cqlsh.py (автоматическое добавление буквы D: буква диска)
Примечание. Рабочее пространство моего проекта находится на диске D: окна.OS
файл cleanup.sh -
#!/bin/bash
hostname=$1
echo "---------------------------"
echo " Clearing Cassandra with keyspaces"
echo "---------------------------"
echo -e "\nGet a list of all keyspaces that doesn't contain system prefix"
keyspaces=$(echo desc keyspaces | cqlsh $hostname | xargs -n1 echo | grep -v ^system)
echo -e "\nDropping all keyspaces that doesn't contain system prefix..."
for ks in $keyspaces; do
echo "drop keyspace $ks;" | cqlsh $hostname
#echo Dropped "$ks"
done
echo -e "DONE"
sleep 2
Это класс Java в моем проекте, который выполняет файл оболочки -
URL resource = ClassLoader.getSystemResource("cleanup.sh");
File resourceFile = Paths.get(resource.toURI()).toFile();
String resourceFilePath = resourceFile.getAbsolutePath();
String cmd[] = {"sh", resourceFilePath,"127.0.0.1"};
ProcessBuilder pb = new ProcessBuilder(cmd);
pb.redirectOutput(Redirect.INHERIT);
pb.redirectError(Redirect.INHERIT);
Process proc = pb.start();
Но когда я выполняюЯва программа, я получаю следующую ошибку -
---------------------------
Clearing Cassandra with keyspaces
---------------------------
Get a list of all keyspaces that doesn't contain system prefix
C:\Python27\python.exe: can't open file 'D:\c\Users\Dell\tools\apache-cassandra-2.2.6\bin/cqlsh.py': [Errno 2] No such file or directory
Dropping all keyspaces that doesn't contain system prefix...
DONE
Как вы можете видеть, он говорит, что не может открыть файл 'D: \ c \ Users \ Dell \ tools \ apache-cassandra-2.2.6 \ bin /cqlsh.py ': [Errno 2] Нет такого файла или каталога, если вы заметили путь к файлу, начинающийся с диска D: я думаю, это потому, что рабочее пространство моего проекта работает на диске D :.Так, как мне заставить это работать.