【问题标题】:How to properly start a script generated by gradle using upstart?如何使用 upstart 正确启动 gradle 生成的脚本?
【发布时间】:2014-10-20 21:25:14
【问题描述】:

我正在尝试将 Java 应用程序部署到 VPS。我正在使用带有“应用程序”插件的 Gradle 构建系统。我希望应用程序与服务器一起启动。

在部署过程中,我运行./gradlew install 来准备运行脚本。直接运行时,它们可以正常工作。

我使用http://www.whiteboardcoder.com/2014/02/ubuntu-upstart-job-with-java-jar.html 作为新贵配置的基础:

description "the test server"
start on runlevel [2345]
stop on runlevel [!2345]

expect fork

script
   cd /opt/testserver/
   exec ./build/install/testserver/bin/testserver
end script

但是upstart 在运行start testserver 后报告的PID 与使用ps 找到的PID 不同。我的猜测是,原因是生成脚本的最后一行:

exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" mypackage.TestServer"$@"

因此,Upstart 无法停止应用。有没有办法让暴发户看到正确的PID?

【问题讨论】:

  • 你能粘贴 testserver 脚本的全部内容吗(由 Upstart 作业执行)?

标签: java linux bash gradle upstart


【解决方案1】:

看来这里没有分叉,所以您应该尝试删除expect fork 位。

【讨论】:

  • 你是对的。 “exec”替换当前进程,因此不涉及分叉。
猜你喜欢
  • 2014-02-18
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
  • 2016-03-28
  • 2013-09-08
  • 2014-08-17
  • 2014-10-10
  • 1970-01-01
相关资源
最近更新 更多