Запустить Jar в фоновом режиме на Linux

Запустить Jar в фоновом режиме на Linux

У меня есть jar, который работает вечно (бесконечный цикл с потоком прослушивания сокета), и мне нужно, чтобы он работал в фоновом режиме все время. Например: "java -jar test.jar" Как это сделать? Заранее спасибо!

решение1

несколько путей:

  1. добавление &в конец. Однако при использовании этого, программа все равно будет завершена, если вы закрыли терминал, который запустил программу.

  2. Запустите screenсеанс и запустите программу внутри него; вы можете отсоединить сеанс screenи закрыть терминал. Позже вы можете снова подключиться к сеансу и снова оказаться на консоли, как будто вы были там все это время. Однако вам нужно будет запустить сеанс экрана перед запуском программы, и если вы забыли это сделать, вы ничего не сможете с этим поделать.

  3. Используйте disownуправление заданиями из вашей оболочки. Это отсоединит задачу от вашего tty, и ваша программа не будет завершена при закрытии tty. Однако я не думаю, что есть какой-либо способ повторно прикрепить отчужденное задание.

решение2

Приглашение командной строки, которое я всегда использовал для длительных интервалов работы после выхода из системы, — «nohup», так что в вашем случае это

nohup java -jar test.jar &

& важен, чтобы вы могли запустить другую оболочку. Я думаю, что это не продлится до перезагрузок.

решение3

Если под "всегда" вы подразумеваете, что он запускается при загрузке машины, вам нужно будет запустить его как часть скриптов загрузки. Грязный способ сделать это — добавить

java -jar test.jar >/dev/null 2>&1 &

/etc/rc.local(или замените на /dev/nullваш любимый файл журнала).

Лучше было бы создать init.dскрипт, который запускается на соответствующих уровнях запуска (например, вам может не понадобиться его запуск на уровнях 0, 1 или 6). Таким образом, вы также можете автоматически перезапустить его в случае его остановки и иметь более удобный интерфейс для его временной остановки.

Небольшие примеры наhttp://www.howtoforge.com/forums/archive/index.php/t-3628.html

Большое объяснение наhttp://developer.novell.com/wiki/index.php/Writing_Init_Scripts

решение4

Вы можете запустить любую задачу в фоновом режиме в Linux, добавив символ «&» в конец командной строки, например:

java -jar test.jar &

Связанный контент