Хотя стандартный ответ на этот вопрос, кажется, jsvc , я использовал инструменты демона djb , чтобы быть отличный способ превратить что угодно в демона.
У меня есть java, python и несколько сценариев оболочки, которые работают как демоны, с простым способом их запуска / остановки и отличным протоколированием.
Раньше я запускал сам daemontools с правами root на initctl, как это было изначально задумано, но через несколько месяцев я решил запустить его вручную под обычным пользователем и с помощью svscan-start для более удобного ведения журнала. .
Я использовал Akuma в прошлом, с большим успехом. Тот факт, что это библиотека Java, действительно упрощает задачу, встраивание функциональности тривиально.
Я бы не исключил полностью внешние обертки.
Я заметил несколько уважаемых программ, использующих Tanuki Wrapper http://wrapper.tanukisoftware.org/ .
Это дает дополнительное преимущество, заключающееся в том, что программу также можно легко запустить как службу Windows при последовательном подходе.
Если я хочу запустить приложение в фоновом режиме как демон, я делаю это следующим образом:
nohup java -jar MyJar &
В этом нет ничего особенно ненадежного - nohup
не позволяет ему получать SIGHUP
при отключении, а &
запускает процесс в фоновом режиме.
При желании вы можете перенаправить вывод на что-то другое, кроме nohup.out
.
Я бы использовал функцию init.d демона RedHat. Это позволяет вам перезапустить приложение, когда это сделает сервер. Запуск nohup не обрабатывает перезапуск сервера и т. Д.
Вы можете попробовать использовать экран
(Запустить экран, затем запустить Java-программу, затем закрыть [не выходить] экран)