首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Upstart启动java进程

用Upstart启动java进程
EN

Ask Ubuntu用户
提问于 2012-07-12 11:38:37
回答 1查看 12.9K关注 0票数 6

我想使用Upstart启动一个java进程。目前,在我们的OpenSuSE服务器上,我使用System init系统来实现这一点,但是在我们的Ubuntu服务器上,我更愿意使用Upstart。但我有两个问题..。

我有一个Upstart作业(一个任务)来配置服务器,比如myconfig。在启动我的java进程的工作中,我表面上拥有:

代码语言:javascript
复制
start on stopped myconfig
exec /path/to/myjavastartscript.sh

myjavastartscript.sh运行'java -classpath blah‘。在System init中,启动服务运行'nohup /path/to/myjavastartscript.sh script.sh &‘。

因此,我的第一个问题是,我仍然需要使用exec命令执行nohup还是运行在后台?

运行时,MyClass启动其他Java进程。在System init中,服务停止只是查找某个用户拥有的java进程并将其杀死。我的第二个问题是如何用Upstart控制这些进程的终止?

EN

回答 1

Ask Ubuntu用户

发布于 2012-07-16 16:27:38

您不需要使用nohup,因为当Upstart运行程序时,该进程将不会与终端相关联(默认情况下)。

对于Upstart,我建议要么直接打个电话:

代码语言:javascript
复制
exec java -classpath blah MyClass

..。或者确保/path/to/myjavastartscript.sh script.sh调用:

代码语言:javascript
复制
exec java -classpath blah MyClass

请注意,上面的第一个exec是Upstart节,而第二个是shell关键字。如果您的shell脚本没有调用exec的shell版本,则需要小心确保正确设置Upstart expect节-参见http://upstart.ubuntu.com/cookbook/#expect

关于停止服务,Upstart将自动终止它正在跟踪的进程(与MyClass关联的主JVM进程)和该进程的任何子进程(从技术上讲,同一进程组中的任何进程(参见http://upstart.ubuntu.com/cookbook/#stopping-a-job))。

如果没有更多的详细信息,我不确定您的start on条件是否合适--想必,您希望MyClass作业启动当且仅当已经设置了配置文件?如果是这样的话,标准的成语是让作业pre-start节在/etc/default/MyClass.conf中阅读。如果它决定该文件不存在,或者配置文件以某种方式表示服务已禁用/未正确设置,则pre-start只需调用stop来停止作业(完全)启动(参见http://upstart.ubuntu.com/cookbook/#pre-start)。这种方法的优点是,您的start on条件可以可靠地设置为任何一组条件,从而使作业开始。当满足这些条件时,Upstart将运行作业;预启动将运行,确定配置无效,只需退出即可。当管理员决定配置服务时,作业将完全开始。

请参阅http://upstart.ubuntu.com/cookbook/#determining-the-start-on-condition-ubuntu-specifichttp://upstart.ubuntu.com/cookbook/#ubuntu-well-known-events-ubuntu-specific以确定start on条件。

最后,请注意,您确实应该始终指定一个stop on条件。见http://upstart.ubuntu.com/cookbook/#stop-on

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

https://askubuntu.com/questions/162768

复制
相关文章

相似问题

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