#java #unix
#java #unix
Вопрос:
У меня есть Java-программа, действующая как сетевой сервер. Благодаря утилите update-rc.d
я установил службу на сервере Debian / Unix, чтобы она работала все время без подключения во время сеанса SSH.
Поскольку моя программа написана в байт-коде Java, а не в собственном исполняемом файле unix, я использовал следующий учебник, чтобы заставить его работать как демон: java как служба демона
Проблема в том, что я больше не вижу выходных данных программы. Мне нужно увидеть вывод программы, поскольку он показывает трассировку стека при возникновении исключения. Как перенаправить стандартные и выходные потоки ошибок в файл журнала?
Альтернативный вопрос: как запустить программу Java и заставить ее работать непрерывно, даже когда я выхожу из SSH?
Ответ №1:
Вы можете обернуть команду запуска приложения в сценарий оболочки и перенаправить вывод туда:
/usr/bin/java -jar app.jar >> /var/log/app/app.log 2>amp;1
Но я бы рекомендовал использовать некоторые рамки ведения журнала, чтобы получить больше контроля над файлами журналов. Что-то вроде slf4j с обратным журналом или любым другим бэкэндом.
Альтернативный вопрос: как запустить программу Java и заставить ее работать непрерывно, даже когда я выхожу из SSH?
Вы можете сделать это с помощью screen:
screen java -jar app.jar ...
Затем после входа по SSH запустите
screen -r
чтобы возобновить сеанс экрана.