当前位置:  开发笔记 > 编程语言 > 正文

如何将现有Java应用程序转换为SYS V服务(守护程序)

如何解决《如何将现有Java应用程序转换为SYSV服务(守护程序)》经验,为你挑选了2个好方法。

我有一个Java应用程序,我开始使用它

java -jar myapp.jar

要停止它我使用CTRL + C.

现在我需要将该应用程序转换为我可以开始的东西:

/etc/init.d/myapp start

我可以停下来:

/etc/init.d/myapp停止

问题是关于保存过程的PID,我想我在某处看到了这样做的一个方法,我不记得在哪里,我无法找到它.

我看到有一个名为Java Server Wrapper的项目,但我寻找一些不限制内存使用的免费软件.我认为这项工作可以在一个bash脚本中完成.



1> Peter Štibra..:

看看Apache Commons Daemon.

它有'jsvc'启动器,它支持启动和停止基于java的守护进程(服务).



2> opyate..:

首先,将PID保存在*nix上:

$ ./yourprogram &
$ echo $! > /var/run/yourpid

yourpid现在将包含yourgram的PID,而/ var/run是放置它的适当位置.

以上内容可以放在"开始"脚本中."停止"脚本可以查看yourpid以了解要杀死的内容.

如果你想要更优雅并且正确地停止你的应用程序,你可以查看Tomcat的org.apache.catalina.startup.Catalina.java的源代码,了解如何实现正确的关闭钩子.

其次,上面的"stop"和"start"脚本可以放在/etc/init.d/mystopstartscript中:

#!/bin/bash
# processname: yourprogram
# pidfile: /var/run/yourpid

case $1 in
start)
        sh /some/where/start.sh
        ;;
stop)  
        sh /some/where/stop.sh
        ;;
restart)
        sh /some/where/stop.sh
        sh /some/where/start.sh
        ;;
esac   
exit 0

这是一个相当本土化的解决方案,其中的想法主要来自优秀的'ol Tomcat,但我希望它有所帮助:)

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有