Лучший способ демонизировать 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-битной поддержкой.
Я бы использовал демон RedHat init.функция D. Это позволяет перезапустить приложение, когда это делает сервер. Запуск nohup не обрабатывает перезапуск сервера и т. д.
Я бы не исключил внешние обертки полностью.
Я заметил, что некоторые уважаемые программы используют оболочку Tanukihttp://wrapper.tanukisoftware.org/.
Это имеет дополнительное преимущество, что программа также может быть легко запущена как служба windows, с последовательным подходом.
Я использовал Акумы в прошлом году с большим успехом. Тот факт, что это библиотека Java, действительно облегчает работу, встраивание функциональности тривиально.
вы можете попробовать использовать screen
(экран запуска, затем запустите программу java, затем закройте [не выходите] экран)