首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >作为Unix服务运行的Java

作为Unix服务运行的Java
EN

Stack Overflow用户
提问于 2010-10-13 18:07:32
回答 5查看 29.8K关注 0票数 18

我已经用Java构建了一个小守护进程,我想把它作为Unix下的一个服务运行(例如Debian5)。我读到过使用Java包装器的可能性,但是没有其他更容易实现的选择吗?我不能只使用Unix命令吗,比如xxx java -jar program.jar

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-10-13 18:49:34

好吧,如果你想运行你的java程序,即使你退出了shell,下面是最简单的方法:

代码语言:javascript
复制
$nohup java -jar program.jar &
票数 29
EN

Stack Overflow用户

发布于 2010-10-13 18:53:32

您需要在/etc/init.d中创建适当的脚本,并将其链接到/etc/rcX.d目录。该脚本应至少支持startstopstatus参数。在启动期间,它应该使用适当的参数运行java命令,可能是通过nohup java <arguments> &。然后,您应该将新启动进程的PID保存到/var/run/yourservice.pid文件中。stop命令应读取此PID文件并终止此服务。每个发行版的细节都不同,大多数发行版都提供了一些宏来简化整个工作。最好查看适用于您的发行版的/etc/init.d中的其他服务的示例。

另外:如果你的服务不是从网络上的其他计算机访问的,但是它打开了一些端口,使它不能通过防火墙使用。

如果您的服务处理一些“微妙”的数据,最好添加另一个用户并在/etc/init.d文件中调用适当的sudo命令。

票数 10
EN

Stack Overflow用户

发布于 2010-10-13 18:46:01

您可以这样启动它:

代码语言:javascript
复制
java -jar program.jar

Unix守护进程通常由init启动,或者由/etc/init.d/etc/rc.d中的脚本启动,并在特定的运行级别启动-通常通过/etc/rcX.d中的软链接启动。(其中X是预期的“运行级别”,通常为3。

我认为debian正在转向使用"upstart",一种初始化替换。它使用/etc/init中的配置文件来定义作业,并且这些配置文件非常容易编写。看看这个。

传统上,守护进程关闭stdin、sdtout和stderr,并在启动时执行“双分支”,以便从会话中分离出来,并发出信号表明它们已准备好处理它们应该处理的任何事务。只要守护进程不是从终端启动的,这就不是真正必要的。

如果你想要一个简单的shell包装器来启动你的程序,你只需要写一个小的shell脚本:

代码语言:javascript
复制
#!/bin/sh
/full/path/to/java -jar /full/path/to/program.jar

..。并使其可执行(chmod 755 )

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3922554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档