Как запустить Solr Jetty в фоновом режиме

Я использую сборку Jetty/Solr, которая поставляется вместе с Solr и хотела бы запустить ее в фоновом режиме, а не в терминале.

В настоящее время я запускаю его с помощью java -jar start.jar, но я бы хотел, чтобы он записывался в файл и запускался в фоновом режиме на сервере, чтобы закрыть окно терминала.

Я уверен, что есть некоторая конфигурация java, которую я не могу найти.

Я пробовал java -jar start.jar > log.txt &, но удача не выводится в окно терминала.

Спасибо.

Ответ 1

Попробуйте что-то вроде:

nohup yourcommand > output.log 2>&1 &

nohup предотвратит завершение работы вашей команды в случае выхода из системы.

& запустит его в фоновом режиме.

output.log отправит stdout в output.log

2 > & 1 будет перенаправлять stderr на stdout

Ответ 2

nohup используется для выполнения команд, которые запускаются после выхода из оболочки. Здесь вам нужно "2 > & 1". Это переназначает стандартную ошибку для стандартного вывода. Итак, все будет записано в log.txt. Попробуйте это

java -jar start.jar > log.txt 2 > & 1

Также вы можете добавить '&' запустите его как фоновый процесс.

Ответ 3

Вы можете запустить его с помощью screen, если вы используете unix.

Ответ 4

Вы можете правильно установить его как службу linux.

cd в папку вашего причала, например, моя:

cd /home/spydon/jetty/

Они фактически выполнили большую часть работы с файлом jetty.sh, поэтому скопируйте его в /etc/init.d/

sudo cp ./bin/jetty.sh /etc/init.d/jetty

Затем откройте файл с помощью вашего любимого текстового редактора, например vim или nano

sudo vim /etc/init.d/jetty

В начале просто раскомментируйте (удалите хэш (#)) три строки, которые говорят что-то вроде:

 #chkconfig: 3 99 99
 #description: Jetty 9 webserver
 #processname: jetty

Между тем у вас есть открытый текстовый редактор, также добавьте домашний каталог пристани в начало файла, теперь мой вид выглядит следующим образом:

#!/usr/bin/env bash  
#
# Startup script for jetty under *nix systems (it works under NT/cygwin too).
JETTY_HOME=/home/spydon/jetty

# To get the service to restart correctly on reboot, uncomment below (3 lines):
# ========================
 chkconfig: 3 99 99
 description: Jetty 9 webserver
 processname: jetty
# ========================

Теперь вы можете запустить его с помощью

sudo /etc/init.d/jetty start

И если вы хотите, чтобы он запускался каждый раз при перезагрузке, просто добавьте

sudo ln -s /etc/init.d/jetty /etc/rc1.d/K99jetty
sudo ln -s /etc/init.d/jetty /etc/rc2.d/S99jetty

Это должно работать для большинства современных дистрибутивов, но я только пробовал это на debian based. Вы также можете подумать о создании символической ссылки на jetty.sh, чтобы было легче обновить.