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

12

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

Бенни
источник

Ответы:

8

несколько способов:

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

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

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

Ли Райан
источник
13

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

nohup java -jar test.jar &

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


источник
7

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

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


источник
другая возможность, если вы хотите, чтобы он запускался только с пользовательскими привилегиями, это поместить его в cron и использовать «@reboot» в качестве времени для запуска. Смотрите man 5 crontab для подробностей.
pjz
3
java -jar test.jar &

Оператор & принудительно запускает процесс в фоновом режиме. После этого вы можете запустить команду top, чтобы убедиться, что она запущена.


источник
1

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

java -jar test.jar &

источник
1

Положите &в конце:java -jar test.jar &

Франтишек Жячик
источник