Лучший способ демонизировать Java-приложение в Linux [закрыто]

в то время как я нашел этот вопрос, отвечая здесь на SW несколько раз, я не нашел заключительного ответа, что является лучшим подходом.

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

Я до сих пор нашел 3 разных оболочки методы:

  • старт-стоп-демона
  • RedHat демон init.функция D
  • nohup при запуске / disown после запуска

Что вы люди используете, и можете порекомендовать как самый надежный метод?

спасибо.

7 ответов


в то время как стандартный ответ на этот вроде бы jsvc, Я использую djb это daemon tools чтобы быть отличным способом, чтобы сделать что-нибудь в демона.

У меня есть java, python и несколько сценариев оболочки, работающих как демоны, с простым способом запуска/остановки их и отличным журналированием.

Я использовал для запуска daemontools сам как root на initctl, как первоначально был разработан, но через несколько месяцев я решил запустить его вручную, под обычным пользователем, и используя svscan-начало для более хорошего входа.


если я хочу запустить приложение в фоновом режиме в качестве демона, я делаю это так:

nohup java -jar MyJar &

в этом нет ничего особенно ненадежного - nohup удерживает его от получения SIGHUP при отключении и & запускает процесс в фоновом режиме.

дополнительно, вы можете перенаправить вывод на что-то другое, чем nohup.out.


взгляните на http://yajsw.sourceforge.net/. Это бесплатная и несколько совместимая реимплементация Tanukisoftware Java Service Wrapper с бесплатной 64-битной поддержкой.

существует также Таблица сравнения YAJSW, JSW, ACD и L4J.


Я бы использовал демон RedHat init.функция D. Это позволяет перезапустить приложение, когда это делает сервер. Запуск nohup не обрабатывает перезапуск сервера и т. д.


Я бы не исключил внешние обертки полностью.
Я заметил, что некоторые уважаемые программы используют оболочку Tanukihttp://wrapper.tanukisoftware.org/.

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


Я использовал Акумы в прошлом году с большим успехом. Тот факт, что это библиотека Java, действительно облегчает работу, встраивание функциональности тривиально.


вы можете попробовать использовать screen (экран запуска, затем запустите программу java, затем закройте [не выходите] экран)