Служба Custon в Unix с обновлением-rc.d LOG?

#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
  

чтобы возобновить сеанс экрана.