V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
choice4
V2EX  ›  Java

杀死 Java 程序

  •  
  •   choice4 · 2018-09-12 14:53:43 +08:00 · 5090 次点击
    这是一个创建于 2260 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过 java -jar 启动的项目要如何杀死呢
    占用命令行的话可以直接 ctrl-c 掉 但是如果启动加了 &呢 linux 上 kill -9 windows 呢? 或者说 java 有命令可以对 java -jar 跑起来的程序杀掉吗 kill -9 好像是粗暴了一点

    25 条回复    2018-09-26 14:18:18 +08:00
    panpanpan
        1
    panpanpan  
       2018-09-12 14:59:23 +08:00
    kill -15
    lastpass
        2
    lastpass  
       2018-09-12 15:08:33 +08:00 via Android
    →_→目前我是这样实现的。JAVA 去监听某个指定文件下是否创建 /更新了某个文件,监听之后执行 destroy 方法,把该 flush 给 flush,该 close 的 close,然后 system.exit()
    lastpass
        3
    lastpass  
       2018-09-12 15:12:34 +08:00 via Android
    并不清楚 tomcat 如何用 bat 或 sh 实现 shutdown 的。只能粗暴的使用监听了。╮(╯_╰)╭
    zhenjiachen
        4
    zhenjiachen  
       2018-09-12 15:20:05 +08:00
    wenzhoou
        5
    wenzhoou  
       2018-09-12 15:32:59 +08:00 via Android   ❤️ 1
    注册成服务。参考这个文档最后一部分。http://www.ityouknow.com/springboot/2017/05/09/springboot-deploy.html
    zhangwugui
        6
    zhangwugui  
       2018-09-12 15:33:52 +08:00   ❤️ 7
    不好意思,我看成了杀死 Java 程序员,吓死我了。
    andylsr
        7
    andylsr  
       2018-09-12 15:39:48 +08:00 via Android
    @zhangwugui 可怕😂
    zydxn
        8
    zydxn  
       2018-09-12 15:50:16 +08:00
    ps auxw |grep ******** |grep -v grep |awk '{print $2}' |xargs kill -9
    choice4
        9
    choice4  
    OP
       2018-09-12 15:57:31 +08:00
    @wenzhoou 这个感觉不错
    Narcissu5
        10
    Narcissu5  
       2018-09-12 16:05:47 +08:00
    优雅停机需要程序自己支持,不管什么语言这个是一定的。Springboot 就提供了对优雅停机的支持。另外通过 JMX 也是比较好的一种方式
    zhangwugui
        11
    zhangwugui  
       2018-09-12 16:37:35 +08:00
    @andylsr 哈哈哈哈,午睡没睡好,结果眼花了哈哈哈
    ArthurKing
        12
    ArthurKing  
       2018-09-12 16:47:56 +08:00
    一直都是 kill -9,反正程序从来没嫌过我粗暴
    sxul07
        13
    sxul07  
       2018-09-12 17:14:04 +08:00
    nginx 应该是类似命名管道的吧 监听文件有点骚了
    LukeChien
        14
    LukeChien  
       2018-09-12 19:53:34 +08:00 via Android
    tomcat 有个管理端口可以发送关闭命令
    likuku
        15
    likuku  
       2018-09-12 19:56:57 +08:00
    实在不行,可以拔电源线 /远程控制卡关机。
    sampeng
        16
    sampeng  
       2018-09-12 20:28:46 +08:00
    就是优雅停机啊。。。
    楼上 4,5 楼。本质上都是 kill。只是好看和方便一点。
    真正的优雅停机。需要程序加一个 shutdown 的接口或者方式。2 楼的就算一种。
    高并发和有强一致要求的,一定要有这个玩意。不然停机的瞬间,新用户进来搞一半就不好了
    expy
        17
    expy  
       2018-09-12 20:38:35 +08:00
    程序自己要处理 SIGINT 吧,不然还是得强制退出。
    broadliyn
        18
    broadliyn  
       2018-09-12 20:44:01 +08:00 via iPhone
    spring boot 提供有 management 接口来优雅下蛋的。
    realpg
        19
    realpg  
       2018-09-12 20:56:16 +08:00
    @lastpass #3
    没研究过 估计是 pid 文件 以及 signal
    zhenjiachen
        20
    zhenjiachen  
       2018-09-12 21:18:44 +08:00 via iPhone
    @sampeng 把 Spring boot 打包成可执行文件,是 Spring boot 已经实现了 shutdown 了,当传入 ztop 的时候会调用 shutdown 事件
    yidinghe
        21
    yidinghe  
       2018-09-12 21:32:33 +08:00 via Android
    windows 下也有关闭进程的命令,可以搜下 wmic
    sampeng
        22
    sampeng  
       2018-09-13 00:57:18 +08:00 via iPhone
    @zhenjiachen 程序不实现 shutdown,各种资源会自己释放?是,进程退掉资源会释放。但我说的是优雅降级退出。

    我理解的降级退出是程序内部将各个服务都停止工作、保存好该保存的。然后告知外部已经停止,最后再退出或者外部二次确认后退出。
    baozijun
        23
    baozijun  
       2018-09-13 01:06:25 +08:00 via iPhone
    jps 即可,找到 pid,kill
    geelaw
        24
    geelaw  
       2018-09-13 01:09:41 +08:00 via iPhone   ❤️ 1
    我严重怀疑楼主有没有做过任何严肃的编程或者做过最简单的编程思考。

    基本的思路是调用操作系统 API 启动 Java 之后你会得到进程 ID 或者 handle。如果你要干掉一个进程,调用结束进程的 API 即可。

    映射到 Win32,用 CreateProcess、ShellExecute 之后你可以获得进程 handle,你可以调用 TerminateProcess 结束进程,最后调用 CloseHandle 释放进程句柄。

    映射到 PowerShell,先用 Start-Process 启动进程,并获得进程对象,稍后用 Stop-Process 结束进程。你可以调用 Dispose 也可以不调用(会自动回收的)。
    xixinimei
        25
    xixinimei  
       2018-09-26 14:18:18 +08:00
    要看系统对哪些 Kill 信号做了反应。比如 shutdownhook 可以响应 kill -15 信号,但却对 kill -9 浑然不知。如果程序本身没有写 shutdownhook 的话,那 kill -9 和 kill -15 没区别。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:39 · PVG 00:39 · LAX 08:39 · JFK 11:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.