Подтвердить что ты не робот

Java работает как служба Unix

Я создал небольшой демон в Java, и я хотел бы запустить его как службу под Unix (например, Debian 5). Я прочитал, что есть возможность использовать оболочку Java, но нет ли другого варианта, который проще реализовать? Не могу ли я использовать команду Unix, например xxx java -jar program.jar?

4b9b3361

Ответ 1

Ну, если вы хотите запускать свою Java-программу, даже когда вы выходите из своей оболочки, это самый простой способ:

$nohup java -jar program.jar &

Ответ 2

Вам нужно создать соответствующий script в /etc/init.d и связать его с каталогами /etc/rcX.d. script должен поддерживать не менее start, stop и status параметры. Во время запуска он должен запустить команду java с соответствующими аргументами, возможно, через nohup java <arguments> &. Затем вы должны сохранить PID вашего недавно начатого процесса в файл /var/run/yourservice.pid. Команда stop должна прочитать этот файл PID и убить эту службу. Детали варьируются от распределения к распределению, большинство дистрибутивов предоставляют некоторые макросы, чтобы облегчить всю работу. Лучше всего посмотреть на примеры других сервисов в /etc/init.d для вашего распространения.

Дополнительно: Если ваша служба не доступна с других компьютеров в сети, но она открывает какой-то порт, сделайте его недоступным с помощью брандмауэра.

Если ваша служба обрабатывает некоторые "деликатные" данные, полезно добавить другого пользователя и вызвать соответствующую команду sudo в вашем файле /etc/init.d.

Ответ 3

Вы можете запустить его как:

java -jar program.jar

Демоны Unix обычно запускаются с помощью init или запускаются с помощью script в /etc/init.d или /etc/rc.d и запускаются на определенных уровнях выполнения - обычно софт-ссылками в /etc/rcX.d. (где X - предполагаемый "уровень запуска", который обычно равен 3.

Я думаю, что debian переходят к использованию "upstart", init-replacement. Он использует конфигурационные файлы в /etc/init для определения заданий, и их довольно легко написать. Проверьте это.

Daemons традиционно закрывает stdin, sdtout и stderr, а при запуске выполняет "двойную вилку", чтобы отсоединиться от сеанса, а также сообщить, что они готовы обрабатывать все, что им нужно. Это не обязательно, если демон не запускается с терминала.

Если вы хотите, чтобы простая оболочечная оболочка запускала вашу программу; вам просто нужно написать небольшую оболочку script:

#!/bin/sh
/full/path/to/java -jar /full/path/to/program.jar

... и сделать его исполняемым (chmod 755)

Ответ 4

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

http://barelyenough.org/blog/2005/03/java-daemon/

В качестве альтернативы вы можете посмотреть проект Apache Commons Daemon, хотя для этого требуется собственный код (поддерживаемые Unix и Win32):

http://commons.apache.org/daemon/

Ответ 5

Вы можете использовать задание cron для планирования вашей программы. Вы также можете просмотреть эту статью для получения подробных сведений о том, как запускать скрипты при запуске. Вы можете написать script, который запускает вашу java-программу и запускает ее при запуске, как указано в статье.