Jetty сервер перестает работать после закрытия окна терминала - PullRequest
5 голосов
/ 03 марта 2011

Я новичок в развертывании приложений на Java и Jetty.Я использую настройки по умолчанию для настройки моей пристани и запускаю java -jar start.jar в моем окне терминала.Сервер работает как положено, но когда я закрываю свой терминал, он останавливается.Это нормально?Я использовал XAMPP раньше, и там вы можете без проблем закрыть терминал.Как мне решить эту проблему, каждый должен время от времени выключать свой персональный компьютер.

Я использую Mac между прочим.

Ответы [ 5 ]

10 голосов
/ 03 марта 2011

Похоже, вы используете ssh или что-то в этом роде для запуска Jetty на удаленном сервере Linux / Unix.

Таким образом, вы можете использовать nohup java -jar start.jar & - nohup, чтобы предотвратить процессостанавливается обычным Unix-сигналом «зависания» ( ref ) при выходе из системы, а & помещает причину в качестве фонового процесса, поэтому вы можете ввести exit или что-либо еще, чтобы выйти из системы.

Если вы хотите снова подключиться к терминалу Jetty, я бы порекомендовал прочитать на экране GNU .

Если вы хотите снова аккуратно остановить Jetty,Я бы действительно рекомендовал использовать его в качестве службы или использовать screen, чтобы не потерять терминал.Но если для этого уже слишком поздно, вы можете найти PID в выводе jps -l, а затем вызвать kill $PID.

4 голосов
/ 03 марта 2011

попробуйте "nohup java -jar start.jar &"

, и я уже сказал это в предыдущем вопросе)

1 голос
/ 08 октября 2013

Вы также можете правильно установить его как службу linux (если вы на самом деле подключаетесь к серверу 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

Пока у вас открыт текстовый редактор, также добавьте домашний каталог 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
# ========================

(На самом деле вам не нужно раскомментировать эти три строки, чтобы он работал, только добавьте jetty_home. Но для правильного развертывания вам, вероятно, следует исправить эти строки.)

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

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.

1 голос
/ 03 марта 2011

Как убить процесс:

1) стиль Java

при старте пристани:

java -DSTOP.PORT = 8077 -DSTOP.KEY = secret_key_only_admin_know -jar start.jar

для остановки:

java -DSTOP.PORT = 8077 -DSTOP.KEY = secret_key_only_admin_know -jar start.jar -stop

P.S. порты могут быть любыми, но они должны быть одинаковыми для команд start и kill:)

2) стиль linux

процесс уничтожения с помощью PID

1 голос
/ 03 марта 2011

Вы можете настроить Jetty для запуска в качестве службы ... вот инструкция для linux и windows .Таким образом, вам не нужно беспокоиться о том, чтобы каждый раз запускать причал через терминал.

...