关闭终端窗口后,Jetty服务器停止运行

时间:2011-03-02 21:33:00

标签: java macos jetty

在Java和Jetty应用程序部署方面,我是新手。我使用默认设置来设置我的码头服务并在终端窗口上运行java -jar start.jar。服务器按预期运行,但当我关闭终端时它会停止。这是正常的吗?我之前和之前都使用过XAMPP,你可以毫无问题地关闭终端。我如何克服这个问题,每个人都需要偶尔关闭那台个人电脑。

我正在使用mac btw。

5 个答案:

答案 0 :(得分:10)

听起来你正在使用ssh或类似东西在远程Linux / Unix服务器上启动Jetty。

因此,您可以使用nohup java -jar start.jar & - nohup来阻止您的进程在您注销时被常用的Unix“hangup”信号(ref)停止,并& 1}}将jetty作为后台进程,因此您可以键入exit或其他任何内容进行注销。

如果您希望能够重新连接到Jetty终端,我建议您阅读GNU screen

如果你想再次优雅地停止码头,我真的建议将其用作服务,或者使用screen以避免丢失终端。但如果为时已晚,您可以在jps -l的输出中找到PID,然后调用kill $PID

答案 1 :(得分:4)

尝试“nohup java -jar start.jar&”

我已经在之前的问题中说过了)

答案 2 :(得分:1)

您可以设置jetty作为服务运行......这是linuxwindows的说明。这样,您无需担心每次通过终端启动jetty。

答案 3 :(得分:1)

如何杀死进程:

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。 ports可以是任何 - 但它们对于start和kill命令必须相同:)

2)linux风格

通过PID杀死进程

答案 4 :(得分:1)

您也可以将其正确安装为Linux服务(如果您实际连接到Linux服务器)。

cd到您的jetty文件夹,例如我的:

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的发行版上尝试过。