在linux中启动一个类似服务的jar文件[关闭]

Posted

技术标签:

【中文标题】在linux中启动一个类似服务的jar文件[关闭]【英文标题】:Start a jar file like service in linux [closed] 【发布时间】:2014-02-28 01:20:26 【问题描述】:

我想按如下方式启动和停止我的jar文件

service myService start

service myService stop

我当前运行的jar文件如下

cd /home/alex/IdeaProjects/myService
java -jar target/myService-SNAPSHOT-1.jar server config.yml

我该怎么办?

【问题讨论】:

实现包装服务。稍作搜索就会显示一些您可以使用的第 3 方实现。 欺骗***.com/questions/11203483/… 【参考方案1】:

我更喜欢轻量级、免费的 bash 脚本,而不是需要许可的更复杂的系统。

http://gustavostraube.wordpress.com/2009/11/05/writing-an-init-script-for-a-java-application/

Running jar as a Linux service - init.d script gets stuck starting app

https://askubuntu.com/questions/99232/how-to-make-a-jar-file-run-on-startup-and-when-you-log-out

【讨论】:

您的链接很有帮助。谢谢【参考方案2】:

如果你想尝试 DIY 的方式,你可以在你的 /etc/init.d 目录中放置一个启动脚本,就像这里所说的那样。

http://www.ghacks.net/2009/04/04/get-to-know-linux-the-etcinitd-directory/

但是,要实现干净的yourScript stop 命令,我建议您将功能拆分为启动器和守护程序,并使您的启动器能够启动或与现有守护程序通信,以便向其发送订单。然后你的启动脚本只会调用你的启动器,而启动器又会启动一个新的守护进程,或者向现有的守护进程发送命令。

【讨论】:

请求:您能否发布一个启动器和守护程序的小示例(针对这种特殊情况)或添加一些有效教程的链接。谢谢。 恐怕我手头什么也没有。您最好的办法是在您的服务中为管理目的保留一个端口,就像应用程序服务器一样,然后编写一个简单的 30-40 行程序(您的启动器)将命令发送到该端口。然后您的服务将有一个线程在该端口上侦听,处理重新启动或停止命令 前段时间我正在解决我记录的类似任务jaksky.wordpress.com/2013/11/03/…【参考方案3】:

您需要一个服务包装器来运行 Jar 文件。

有 init.d here. 或 systemd (ubuntu 16+) here 的示例和说明

【讨论】:

只是为使用 Ubuntu 16+ 的人提供的信息。这不适用于 Ubuntu 16+。您将收到“无法启动 MyService.service:未找到 Unit MyService.service” systemd 版本很棒:D

以上是关于在linux中启动一个类似服务的jar文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 linux shell脚本启动jar包,进行关闭,查看状态

linux的.service服务开机自启动后为啥会自动停止

Linux系统中启动jar程序

Linux 后台启动运行jar包

Spring Boot 项目部署到 Linux服务器

linux如何启动一个jar包