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