Как правильно запустить причал - PullRequest
6 голосов
/ 21 июля 2010

возможно, это действительно глупый вопрос, так как, похоже, ни у кого больше нет этой проблемы.В документации Jetty говорится, что jar -jar start.jar запускает Jetty, и это делает.Но когда я закрываю свою консоль SSH, очевидно, что она умирает.

Как мне правильно ее запустить?

Ответы [ 4 ]

13 голосов
/ 31 декабря 2012

Это для работы на рабочей машине, которая фактически обслуживает приложение, работающее под Jetty? Я предполагаю, что это так, так как вы спрашиваете о правильном запуске .

Если это так, вам нужна надлежащая система контроля процесса, такая как runit , daemontools , monit , upstart , systemd , или хороший старый SysV init.d (как упомянуто w / суть ). Какой из них использовать, зависит от ваших предпочтений, потребностей бизнеса и, зачастую, от вашей базовой операционной системы.

Я использую и предпочитаю runit . Он построен на основополагающих принципах (daemontools), и для моего предпочтительного дистрибутива (Debian и Ubuntu) он красиво упакован самим автором.

Несмотря на то, что рекомендуется в других ответах и ​​упоминается в комментариях, запуск длительного процесса в screen / tmux или через nohup является неоптимальным. Вы не имеете никакого реального контроля над процессом. Он не будет перезапущен, если он умрет. Вы должны вручную найти его PID и в противном случае вручную управлять службой. Вы должны сделать больше ручной работы, чтобы получить вывод журнала (перенаправление, отправка в какой-то случайный файл и т. Д.). Вы не можете надежно заставить его зависеть от других процессов, или другие процессы зависят от него. Достойные системы контроля процесса предоставляют все эти функции по умолчанию.

Если ваша цель состоит в чем-то другом, обновите вопрос, чтобы он был более конкретным в вашем случае использования.

3 голосов
/ 21 июля 2010
java -jar start.jar & 

(для запуска в фоновом режиме) также должно работать, хотя ведение журнала не будет преобразовано так хорошо, как w / nohup.

Это потому, что уничтожение оболочки, которая запустила процесс (например, путемвыход из системы) убьет процесс, если только он не является фоновым процессом.Экран работает с тех пор, как он работает в фоновом режиме, и экран эффективно поддерживает сеанс во время подключения / отсоединения.

2 голосов
/ 27 декабря 2012

Если вы работаете в системе * nix, лучшим решением может быть использование скрипта в /etc/init.d (или каков эквивалент вашей системы). Есть один на https://gist.github.com/404672.

В противном случае использование nohup или screen из командной строки приведет к тому, что процесс, по крайней мере, не завершится при выходе из системы. Так же будет поставить процесс в фоновом режиме с &.

1 голос
/ 21 июля 2010

Одним из способов является использование nohup

nohup java -jar start.jar

Это имеет преимущество записи stdout и stderr в файл

Другой способ будет использовать screen

...