У меня есть jar, который работает вечно (бесконечный цикл с потоком прослушивания сокета), и мне нужно, чтобы он всегда работал в фоновом режиме. Примером может быть: "java -jar test.jar" Как мне это сделать? Заранее спасибо!
несколько способов:
добавление &
в спину. Однако, используя это, программа все равно будет остановлена, если вы закрыли терминал, запустивший программу.
Начните screen
сессию и запустите программу внутри нее; Вы можете отключить screen
сеанс и закрыть терминал. Позже вы можете снова присоединиться к сеансу и снова оказаться на консоли, как если бы вы были там все время. Тем не менее, вам нужно будет начать сеанс экрана перед запуском программы, и если вы забыли это сделать, вы ничего не можете с этим поделать.
Используйте disown
управление заданиями из вашей оболочки. Это отсоединит задачу от вашего tty, и ваша программа не будет закрыта при закрытии tty. Тем не менее, я не думаю, что есть какой-либо способ восстановить отрешенную работу.
Подсказка командной строки, которую я всегда использовал для продолжительного времени выполнения до выхода из системы, называется «nohup», так что в вашем случае это
nohup java -jar test.jar &
& Важен, чтобы вы могли запустить другую оболочку. Я считаю, что это не будет продолжаться через перезагрузки.
Если под «все время» вы подразумеваете, что он запускается при загрузке машины, вам нужно будет запустить его как часть сценариев загрузки. Грязный способ сделать это, чтобы добавить
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
Оператор & принудительно запускает процесс в фоновом режиме. После этого вы можете запустить команду top, чтобы убедиться, что она запущена.
источник
Вы можете запустить любую задачу в фоновом режиме в Linux, добавив символ «&» в конец командной строки, например
источник
Вы можете использовать общедоступную версию Java Service Wrapper, доступную здесь:
http://wrapper.tanukisoftware.org/doc/english/download.jsp
Затем вы можете запустить его при перезагрузке:
http://wrapper.tanukisoftware.org/doc/english/launch-nix-boot-debian.html
источник
Положите
&
в конце:java -jar test.jar &
источник