【问题标题】:How to programmatically stop an executable war如何以编程方式停止可执行战争
【发布时间】:2013-07-29 06:28:47
【问题描述】:

在 Linux 系统中将可执行的 war 文件作为服务在后台停止时遇到问题。我可以使用以下脚本启动可执行战争:

    java -jar data.war&

但是如何使用 SSH 插件通过 Jenkins 以编程方式停止它?

【问题讨论】:

    标签: jenkins jetty war


    【解决方案1】:

    我可能会从使用 STOP 端口机制开始。有关示例,请参阅此文档。

    http://www.eclipse.org/jetty/documentation/current/quickstart-running-jetty.html#quickstart-stopping-jetty

    【讨论】:

    • 不适用于我的情况,该命令继续启动服务器并失败,因为重复的服务器端口。
    【解决方案2】:

    对于那些需要答案的人。

    PROCESSID=`(ps aux | grep data| grep -v root | awk '{print $2}')`
    kill -9 $PROCESSID
    

    以上代码杀死进程列表中名为“data”的应用程序

    【讨论】:

    • 请注意,“kill -9”相当于立即调用System.exit()。 JVM 没有机会处理这种情况。
    • 我很确定即使是 JVM 也有处理退出的方法,即使是在我在某处读过的 sun 包 API 下的系统级别上也是如此
    • 没有。 -9 表示现在
    • 做了一些研究,证明你是对的。也许 kill -SIGTERM 在这里让 Java prog 处理信号更好
    • 另外,我希望您没有任何其他进程不是由 root 运行的,在其输出中的某个位置通过“ps -aux”包含字符串“data”。
    猜你喜欢
    • 1970-01-01
    • 2010-10-07
    • 2011-04-20
    • 1970-01-01
    • 2021-09-18
    • 2021-04-22
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    相关资源
    最近更新 更多