杀死Java进程

我正在研究计算量很大的代码 – 现在 – 崩溃很多,但我还在努力:)当它崩溃时,我无法关闭GUI窗口; 我必须打开一个shell并杀死-9进程。

它是一个Java进程,很容易找到:

nkint@zefiro:~$ ps aux | grep java nkint 2705 16.6 1.0 460928 43680 ? Sl 12:23 0:08 /usr/lib/jvm/java-6-sun-1.6.0.26/bin/java -Djava.library.path=something something nkint 2809 0.0 0.0 4012 776 pts/0 S+ 12:24 0:00 grep --color=auto java nkint@zefiro:~$ kill -9 2705 

现在这很容易,但却是一项机械任务。 所以通常我等待大约7-8个进程崩溃,然后kill -9每个进程。

我想以自动方式做到这一点。 我认为应该很容易管道一些命令来获取ps aux | grep java的(n-1)结果的id ps aux | grep java并杀了它,但我不知道从哪里开始。

任何人都可以给我任何提示吗?

更多的管道将为您提供您想要的位置。 我是这样做的:

 search_terms='whatever will help find the specific process' kill $(ps aux | grep "$search_terms" | grep -v 'grep' | awk '{print $2}') 

这是发生了什么:

grep -v 'grep'从结果中排除grep进程。

awk '{print $2}'仅打印输出的第二列(在本例中为PID)

$(...)是命令替换。 基本上,内部命令的结果将被用作kill的参数

这有利于更好地控制被杀死的东西。 例如,如果您在共享系统上,则可以编辑搜索术语,以便它只会尝试终止您自己的Java进程。

如果要杀死所有名为java进程,可以使用以下命令:

killall -9 java

此命令将信号发送到由其名称标识的进程。

打开文本编辑器并将此短bash脚本保存在主目录中,作为’killjava’

 #! /bin/bash # Kill Java process # Determine the pid PID=`ps -C java -o pid=` kill -9 $PID 

然后在终端中chmod u+x ~/killjava ,这样就可以执行该文件。

然后你可以从终端调用~/killjava ,你的Java进程就会死掉。 您可能希望考虑以这种方式杀死Java进程的其他资源(例如数据库连接)会受到影响。 例如,或许kill -15会更合适 – 请参阅此处的解释。

这是另一种方法,基于@Dian先前的答案。

这使用jps来标识java进程。

 kill $(jps | grep  | awk '{print $1}') 

MainClass是运行java程序中的一个类,它包含main方法。