Сбор выходных данных из приложения Java и команды оболочки - PullRequest
0 голосов
/ 18 марта 2011

Я пишу сценарий оболочки, который должен делать следующее.
- запустить приложение Java, которое выдает вывод
- запустить команду оболочки, которая производит вывод - собрать оба выхода и отправить их по электронной почте

У меня есть контроль над исходным кодом всех вышеперечисленных шагов.

Есть ли лучшая практика сбора данных из разных источников? Должен ли я перенаправить все в один временный файл? Должен ли я записать разные выходные данные в разные файлы, а затем объединить их? Каковы плюсы и минусы каждого подхода?

Ответы [ 2 ]

0 голосов
/ 18 марта 2011

Я бы предпочел использовать второй скрипт-обертку, который

  • вызывает Java-программу
  • вызывает скрипт оболочки
  • Захватывает вывод в один файл
  • переформатирует вывод
  • подходит для рассылки На самом деле
  • делает рассылку

При условии, что вы используете оболочку Unix, вызовы почтовых сообщений / форматирования и сценариев оболочки намного проще из командной строки.

0 голосов
/ 18 марта 2011

Если вы не беспокоитесь об использовании только Java, вы можете использовать класс Runtime для выполнения команды оболочки с командой java (через exec), это вернет вам объект Process, на котором вы имеете getInputStream и getOutputStream, поэтому вы сможете обрабатывать выходные данные как Java-программы, так и команды оболочки в одном месте и делать все, что захотите (сохраняя его в памяти и напрямую отправляя, перенаправляя выходной поток в ввод потока того, что вы используете для отправки почты, с другим exec) или сохранения его или чего-либо еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...