我现在正在运行 Debian,有时我需要从终端手动终止 Java,但当我尝试时什么kill #pid#
都pkill java
没有发生。没有控制台输出(好的,这是正常的)并且 Java 仍在运行(不正常)。终止它的唯一方法是重新启动 PC。有什么建议吗?
答案1
也许由于某种原因忽略了信号。你试过了kill -9
吗 ?
但请注意:kill -9
不能被忽视或被困住。如果一个进程看到信号 9,它别无选择,只能死亡。它不能做任何其他事情——甚至不能优雅地清理它的文件。
答案2
我偶尔不得不杀死-9。但是,如果这种情况经常发生,您应该解决导致该问题的问题。 Kill -9 意味着有些事情还很遥远。
一般来说,我只在你进入严重的内存崩溃模式时才会看到这种情况,这意味着你要么需要更多的系统内存,要么在启动时给了 java 太多的内存。但更常见的是,特别是如果您正在开发东西,当您用完“PermGen”内存时,您会看到这种情况。
http://www.brokenbuild.com/blog/2006/08/04/java-jvm-gc-permgen-and-memory-options/
无论如何,这可能是由于某种 OutOfMemory 错误造成的。
答案3
这应该有效:
killall -9 java
答案4
对我来说,一旦我杀死了该进程,它就会重新启动。所以对我来说这是一个涉及以下命令的事实调查任务。假设相关端口为8080端口:
lsof -i tcp:8080
请注意底部附近命名的进程java
及其 pid。
然后ps -ef <pid here>
这吐出了一条与 相关的大消息tomcat
。tomcat@9
尤其。
brew services stop tomcat@9
解决了问题