杀死 Java 程序 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
JohnZorn
V2EX    Java

杀死 Java 程序

  •  
  •   JohnZorn Sep 12, 2018 5658 views
    This topic created in 2787 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    映射到 PowerShell,先用 Start-Process 启动进程,并获得进程对象,稍后用 Stop-Process 结束进程。你可以调用 Dispose 也可以不调用(会自动回收的)。
    xixinimei
        25
    xixinimei  
       Sep 26, 2018
    要看系统对哪些 Kill 信号做了反应。比如 shutdownhook 可以响应 kill -15 信号,但却对 kill -9 浑然不知。如果程序本身没有写 shutdownhook 的话,那 kill -9 和 kill -15 没区别。
    About     Help     Advertise     Blog     API     FAQ     Solana     1182 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 77ms UTC 17:38 PVG 01:38 LAX 10:38 JFK 13:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86