我已经用Java构建了一个小守护进程,我想把它作为Unix下的一个服务运行(例如Debian5)。我读到过使用Java包装器的可能性,但是没有其他更容易实现的选择吗?我不能只使用Unix命令吗,比如xxx java -jar program.jar
发布于 2010-10-13 18:49:34
好吧,如果你想运行你的java程序,即使你退出了shell,下面是最简单的方法:
$nohup java -jar program.jar &
发布于 2010-10-13 18:53:32
您需要在/etc/init.d
中创建适当的脚本,并将其链接到/etc/rcX.d
目录。该脚本应至少支持start
、stop
和status
参数。在启动期间,它应该使用适当的参数运行java
命令,可能是通过nohup java <arguments> &
。然后,您应该将新启动进程的PID保存到/var/run/yourservice.pid
文件中。stop
命令应读取此PID文件并终止此服务。每个发行版的细节都不同,大多数发行版都提供了一些宏来简化整个工作。最好查看适用于您的发行版的/etc/init.d
中的其他服务的示例。
另外:如果你的服务不是从网络上的其他计算机访问的,但是它打开了一些端口,使它不能通过防火墙使用。
如果您的服务处理一些“微妙”的数据,最好添加另一个用户并在/etc/init.d
文件中调用适当的sudo
命令。
发布于 2010-10-13 18:46:01
您可以这样启动它:
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脚本:
#!/bin/sh
/full/path/to/java -jar /full/path/to/program.jar
..。并使其可执行(chmod 755 )
https://stackoverflow.com/questions/3922554
复制相似问题