杀死 Java 程序

2018-09-12 14:53:43 +08:00
 choice4

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

5095 次点击
所在节点    Java
25 条回复
yidinghe
2018-09-12 21:32:33 +08:00
windows 下也有关闭进程的命令,可以搜下 wmic
sampeng
2018-09-13 00:57:18 +08:00
@zhenjiachen 程序不实现 shutdown,各种资源会自己释放?是,进程退掉资源会释放。但我说的是优雅降级退出。

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

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

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

映射到 PowerShell,先用 Start-Process 启动进程,并获得进程对象,稍后用 Stop-Process 结束进程。你可以调用 Dispose 也可以不调用(会自动回收的)。
xixinimei
2018-09-26 14:18:18 +08:00
要看系统对哪些 Kill 信号做了反应。比如 shutdownhook 可以响应 kill -15 信号,但却对 kill -9 浑然不知。如果程序本身没有写 shutdownhook 的话,那 kill -9 和 kill -15 没区别。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488552

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX