Как запустить 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, чтобы было легче обновить.
Ответ 5
Вы можете попробовать nohup
, как описано в этом предыдущем ответе.