Перенаправление вывода фонового процесса Java в / dev / null - это хорошая идея? - PullRequest
1 голос
/ 28 декабря 2011

У меня есть процесс Java, который умирает после нескольких дней работы на коробке Solaris.В журнале приложения нет информации о том, почему процесс умер.Глядя на скрипт, который запускает процесс Java, я вижу, что stdout и stderr перенаправляются в / dev / null.Является ли это хорошей идеей в целом для процессов Java (например, где регистрируются ошибки нехватки памяти Java)?

Как / с чего начать с отладки текущей проблемы (процесс умирает)?Стоит ли перенаправить stdout & stderr в обычный файл?

nohup $JAVA_HOME/bin/java \
-Xms256m \
-Xmx1024m \
-jar $CRON_HOME/cron.jar > /dev/null 2>&1 &

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

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

3 голосов
/ 28 декабря 2011

Определенно отправьте эту информацию в файл журнала.Перенаправление stdout / stderr на /dev/null означает, что вы выбрасываете ценную информацию.Отправьте вывод в один или два файла.Вероятно, проще перенаправить stderr в stdout, чтобы вы могли чередовать результаты.Относительно того, где вы регистрируете эту информацию, вероятно, лучше спросить ваших системных администраторов, так как они, вероятно, будут иметь представление о том, куда должна идти эта информация (а вы пока не знаете сколько информации выМы вышли).

Один конкретный сценарий, в котором это полезно, - это когда JVM сама дает сбой (в отличие от вашего приложения в JVM).Отчет о сбое выводится на стандартный вывод, и если вы захватываете стандартный вывод, это полезно, если только рассказать, почему исчезла JVM.

...