LINUX.ORG.RU

Автоматическое завершения после исполнения jar файла

 , ,


0

1

Всем привет, такая проблема - запускаю jar файл - java -jar file.jar Он выдает результат который мне нужно, но после этого не завершается, а так и остается в режиме ожидания. Как сделать так что бы он сам завершался после того как выдаст результат. Просто мне нужно дергать этот jar каждые 15 минут. Буду очень благодарен в помощи.

#!/bin/bash
pkill -F /tmp/java-file.pid
java -jar file.jar&
echo $! > /tmp/java-file.pid
crowbar ()
Ответ на: комментарий от maison999

Тогда парсить вывод. Есть какое-нибудь финальное сообщение?

И, кстати - Enter, ^D нажимал? Может оно ждёт ввода?

ziemin ★★ ()
Ответ на: комментарий от maison999

Просто думал может есть какой то другой вариант

Так тут не в Джаве дело, скорее всего, а просто программа в file.jar почему-то не останавливается. Попробуй понять, почему.

proud_anon ★★★★★ ()
Ответ на: комментарий от ziemin

Нет, финального сообщения нет, только выводит то что мне нужно - text1:text2 и после пустая строка. Да нажимал, ничего не происходит

maison999 ()

А исходники java-программы? Там поток какой-то не завершается после вывода результата. Потому и не завершается.

BattleCoder ★★★★★ ()
Ответ на: комментарий от ziemin

Нет, не умер :) Ну значит надо будет в исходниках смотреть

maison999 ()

Могу предложить три варианта:

1) Простой. timeout 10 java -jar file.jar. Если время ответа предсказуемое, то можно вместо 10 секунд поставить более оптимальное время.

2) Сложный. Написать обвязку на каком-нибудь питоне, который будет убивать приложение, как только необходимые данные будут получены.

3) Правильный. Исправить приложение, а не городить костыли.

Deleted ()
Ответ на: комментарий от ziemin
#!/bin/bash

function process() {
  sleep 2
  echo "qwe"
  echo "asd"
  sleep 1
  echo "zxc"
}

while read line; do
  echo "$line"
  exit
done < <(process)
anonymous ()

Так декомпилируй (JD-GUI, например) и посмотри что там делается.

kovrik ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.