通过 java -jar 启动的项目要如何杀死呢
占用命令行的话可以直接 ctrl-c 掉
但是如果启动加了 &呢
linux 上 kill -9
windows 呢?
或者说 java 有命令可以对 java -jar 跑起来的程序杀掉吗
kill -9 好像是粗暴了一点
1
panpanpan 2018-09-12 14:59:23 +08:00
kill -15
|
2
lastpass 2018-09-12 15:08:33 +08:00 via Android
→_→目前我是这样实现的。JAVA 去监听某个指定文件下是否创建 /更新了某个文件,监听之后执行 destroy 方法,把该 flush 给 flush,该 close 的 close,然后 system.exit()
|
3
lastpass 2018-09-12 15:12:34 +08:00 via Android
并不清楚 tomcat 如何用 bat 或 sh 实现 shutdown 的。只能粗暴的使用监听了。╮(╯_╰)╭
|
4
zhenjiachen 2018-09-12 15:20:05 +08:00
Spring Boot 项目可以看看 这个 https://www.ai5suoai.com/you-ya-kai-qi-he-guan-bi-spring-cloudxiang-mu/
|
5
wenzhoou 2018-09-12 15:32:59 +08:00 via Android 1
注册成服务。参考这个文档最后一部分。http://www.ityouknow.com/springboot/2017/05/09/springboot-deploy.html
|
6
zhangwugui 2018-09-12 15:33:52 +08:00 7
不好意思,我看成了杀死 Java 程序员,吓死我了。
|
7
andylsr 2018-09-12 15:39:48 +08:00 via Android
@zhangwugui 可怕😂
|
8
zydxn 2018-09-12 15:50:16 +08:00
ps auxw |grep ******** |grep -v grep |awk '{print $2}' |xargs kill -9
|
10
Narcissu5 2018-09-12 16:05:47 +08:00
优雅停机需要程序自己支持,不管什么语言这个是一定的。Springboot 就提供了对优雅停机的支持。另外通过 JMX 也是比较好的一种方式
|
11
zhangwugui 2018-09-12 16:37:35 +08:00
@andylsr 哈哈哈哈,午睡没睡好,结果眼花了哈哈哈
|
12
ArthurKing 2018-09-12 16:47:56 +08:00
一直都是 kill -9,反正程序从来没嫌过我粗暴
|
13
sxul07 2018-09-12 17:14:04 +08:00
nginx 应该是类似命名管道的吧 监听文件有点骚了
|
14
LukeChien 2018-09-12 19:53:34 +08:00 via Android
tomcat 有个管理端口可以发送关闭命令
|
15
likuku 2018-09-12 19:56:57 +08:00
实在不行,可以拔电源线 /远程控制卡关机。
|
16
sampeng 2018-09-12 20:28:46 +08:00
就是优雅停机啊。。。
楼上 4,5 楼。本质上都是 kill。只是好看和方便一点。 真正的优雅停机。需要程序加一个 shutdown 的接口或者方式。2 楼的就算一种。 高并发和有强一致要求的,一定要有这个玩意。不然停机的瞬间,新用户进来搞一半就不好了 |
17
expy 2018-09-12 20:38:35 +08:00
程序自己要处理 SIGINT 吧,不然还是得强制退出。
|
18
broadliyn 2018-09-12 20:44:01 +08:00 via iPhone
spring boot 提供有 management 接口来优雅下蛋的。
|
20
zhenjiachen 2018-09-12 21:18:44 +08:00 via iPhone
@sampeng 把 Spring boot 打包成可执行文件,是 Spring boot 已经实现了 shutdown 了,当传入 ztop 的时候会调用 shutdown 事件
|
21
yidinghe 2018-09-12 21:32:33 +08:00 via Android
windows 下也有关闭进程的命令,可以搜下 wmic
|
22
sampeng 2018-09-13 00:57:18 +08:00 via iPhone
@zhenjiachen 程序不实现 shutdown,各种资源会自己释放?是,进程退掉资源会释放。但我说的是优雅降级退出。
我理解的降级退出是程序内部将各个服务都停止工作、保存好该保存的。然后告知外部已经停止,最后再退出或者外部二次确认后退出。 |
23
baozijun 2018-09-13 01:06:25 +08:00 via iPhone
jps 即可,找到 pid,kill
|
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 也可以不调用(会自动回收的)。 |
25
xixinimei 2018-09-26 14:18:18 +08:00
要看系统对哪些 Kill 信号做了反应。比如 shutdownhook 可以响应 kill -15 信号,但却对 kill -9 浑然不知。如果程序本身没有写 shutdownhook 的话,那 kill -9 和 kill -15 没区别。
|