Итак, я запускаю скрипт bash ниже:
#!/bin/bash
cd /data/www/usr/rzzw/todo/
for i in *; do
endpoint=$(less $i | sed -rn 's/(.*\|endpoint - )(.*)/\2/p')
nohup java -jar /data/www/usr/rzzw/sum/file.jar /data/www/usr/rzzw/sum/config.properties $endpoint 1>"../done/$i-out" 2>"../done/err/$i-err" &
done
Работает нормально, создает логи и запускает JAR-файл X раз. Это именно то, что я хотел. Файл jar начинает получать информацию о конечной точке SPARQL.
Но в начале этот файл должен делать сложный выбор SPARQL, что может занять много времени. Во время ожидания ответа «что-то» убивает эти процессы. Я ожидал, что nohup позаботится о фоновом процессе & .
STDERR:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Эта ошибка возникает только тогда, когда команды выполняются сценарием. Когда я пытаюсь это сделать самостоятельно в терминале Linux, ошибок нет.
Пример рабочей команды:
nohup java -jar /data/www/usr/rzzw/sum/file.jar /data/www/usr/rzzw/sum/config.properties data.archiveshub.ac.uk/sparql 1>out 2>err &
Есть ли какое-то другое решение для запуска файла -jar несколько раз, или этот сценарий bash может каким-то образом подождать, пока он не ответит?
Я не создал этот файл -jar, и все, что происходит во время его выполнения, записывается только в командной строке.