如何正确启动Jetty

时间:2010-07-21 01:43:11

标签: java ssh jetty

这可能是一个非常愚蠢的问题,因为没有其他人似乎有这个问题。在Jetty文档中,它说jar -jar start.jar启动Jetty,它确实如此。但当我关闭我的SSH控制台时,显然它已经死了。

如何正确运行?

4 个答案:

答案 0 :(得分:13)

这是否适用于在实际上为Jetty下运行的应用程序提供服务的生产机器上运行?我认为情况确实如此,因为你要求启动正确

如果是这样,您需要一个适当的流程监督系统,例如runitdaemontoolsmonitupstartsystemd或好的ol' SysV init.d(如上所述w / a gist)。使用哪种方法取决于您的偏好,业务需求以及您的底层操作系统。

我使用并更喜欢runit。它建立在solid principles(daemontools)之上,对于我喜欢的发行版(Debian和Ubuntu),作者本人nicely packaged

尽管在其他答案中被推荐,并在评论中提到,在screen / tmux中启动一个长时间运行的进程,或者通过nohup是次优的。您无法真正控制该过程。如果它死了它将不会重新启动。您必须手动查找其PID,否则手动管理服务。你必须做更多的手工工作来获取日志输出(重定向,发送到一些随机文件等)。您不能可靠地使其依赖于其他进程,或者让其他进程依赖于它。体面的过程监督系统默认为您提供所有这些功能。

如果您的目标完全不同,请更新问题以更具体地说明您的用例。

答案 1 :(得分:3)

java -jar start.jar & 

(在后台运行)也应该可以工作,虽然日志记录不会像w / nohup一样好转。

这是因为杀死启动进程的shell(例如通过注销)会杀死进程,除非它们是后台进程。屏幕也起作用,因为它在后台运行,并且屏幕可以在您附加/分离时有效地保持会话运行。

答案 2 :(得分:2)

如果您使用的是* nix系统,最佳解决方案可能是使用/etc/init.d中的脚本(或任何系统的等效系统)。 https://gist.github.com/404672有一个。

否则,在命令行中使用nohupscreen至少会使您在注销时不会死亡。因此,将使用&将进程置于后台。

答案 3 :(得分:1)

一种方法是使用nohup

nohup java -jar start.jar

这样做的好处是可以将stdout和stderr写入文件

另一种方法是使用screen