
У меня есть jar, который работает вечно (бесконечный цикл с потоком прослушивания сокета), и мне нужно, чтобы он работал в фоновом режиме все время. Например: "java -jar test.jar" Как это сделать? Заранее спасибо!
решение1
несколько путей:
добавление
&
в конец. Однако при использовании этого, программа все равно будет завершена, если вы закрыли терминал, который запустил программу.Запустите
screen
сеанс и запустите программу внутри него; вы можете отсоединить сеансscreen
и закрыть терминал. Позже вы можете снова подключиться к сеансу и снова оказаться на консоли, как будто вы были там все это время. Однако вам нужно будет запустить сеанс экрана перед запуском программы, и если вы забыли это сделать, вы ничего не сможете с этим поделать.Используйте
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 &